【问题标题】:how to convert an ASCII encoded string to UTF8 in php? [duplicate]如何在 php 中将 ASCII 编码的字符串转换为 UTF8? [复制]
【发布时间】:2011-10-13 10:50:28
【问题描述】:

我试图这样做: file_put_contents ($file_name, utf8_encode($data)) ; 但是当我使用 linux 命令从 shell 检查文件编码时:'file file_name' 我得到:'file_name:ASCII 文本'

这是否意味着 utf8_encoding 不起作用?如果是这样,从 ASCII 转换为 UTF8 的正确方法是什么

【问题讨论】:

    标签: php utf-8 ascii


    【解决方案1】:

    试试这个:

    $data = mb_convert_encoding($data, 'UTF-8', 'ASCII');
    file_put_contents ( $file_name, $data );
    

    或使用它来更改文件编码:

    $fd = fopen($file, 'r');
    stream_filter_append($fd, 'convert.iconv.UTF-8/ASCII');
    stream_copy_to_stream($fd, fopen($output, 'w'));
    

    参考:How to write file in UTF-8 format?

    【讨论】:

      【解决方案2】:

      ASCII 是 UTF-8 的子集,所以如果一个文档是 ASCII,那么它已经是 UTF-8

      发现于:Convert ASCII TO UTF-8 Encoding

      【讨论】:

      • 我的字符串包含日文字符
      • 然后使用 iconv。有一个例子。
      【解决方案3】:

      请注意,utf8_encode 只转换编码为 ISO-8859-1 到 UTF-8。一个更合适的名字是 “iso88591_to_utf8”。如果您的文本未以 ISO-8859-1 编码,则可以 不需要这个功能。如果您的文本已经是 UTF-8,您不需要 需要这个功能。事实上,将此函数应用于文本 未在 ISO-8859-1 中编码的文本很可能只会出现乱码。

      如果您需要将文本从任何编码转换为任何其他编码, 改为查看 iconv()。

      http://php.net/manual/en/function.utf8-encode.php

      【讨论】:

        【解决方案4】:

        如果您的字符串不包含任何非 ASCII 字符,那么您可能不会看到差异,因为 UTF-8 向后兼容 ASCII。例如,试着写下文本“1000 さくら”,看看会发生什么。

        【讨论】:

        • +1,那个也是。 file 工具将 UTF-8 中的纯 ASCII 字符检测为 ASCII。
        • 我的字符串包含日文字符
        猜你喜欢
        • 1970-01-01
        • 2011-01-21
        • 1970-01-01
        • 2010-10-12
        • 2017-03-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多