【问题标题】:Cleaning up UTF-16/CJK characters using PHP?使用 PHP 清理 UTF-16/CJK 字符?
【发布时间】:2011-04-11 01:22:13
【问题描述】:

我的计算机上有一些 UTF-16 格式的文件,但这似乎是因为文件的错误或损坏而不是意图 - 它们应该是简单的英文。我上传了其中一个 (here)。如果我将 Firefox(Viwe>Character Encoding)中的编码保留为 UTF-8,那么我会得到大量的乱码(请参阅screenshot)。如果我将编码更改为 UTF-16,那么它看起来会好很多(请参阅 screenshot2),尽管仍然存在一堆 CJK 字符。

我想浏览所有这些文件并清理它们,并可能以 utf-8 格式保存它们(我将把内容插入到使用 utf8_general_ci 排序规则的 mysql 表中)。有谁知道我如何使用 PHP 以自动化方式做到这一点?如果您尝试以 UTF-8 格式查看文件,我想删除文件显示的所有时髦字符,以及如果您以 UTF-16 格式查看文件显示的所有 CJK 字符。

【问题讨论】:

    标签: php utf-8 character-encoding utf-16 cjk


    【解决方案1】:

    这应该可以解决问题:

    $txt = file_get_contents('watches.txt');
    $txt = mb_convert_encoding($txt, 'UTF-8');
    /*Nice regexp to strip non asci and non-printable chars*/
    $txt = preg_replace('/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]+/S','',$txt);
    $txt = preg_replace('/[^\x00-\x7F]+/S','',$txt);
    
    echo $txt;
    

    【讨论】:

    • 感谢您一直在寻找这个。
    猜你喜欢
    • 2016-05-31
    • 1970-01-01
    • 1970-01-01
    • 2016-10-25
    • 2014-08-25
    • 2010-10-16
    • 1970-01-01
    • 1970-01-01
    • 2020-01-20
    相关资源
    最近更新 更多