【问题标题】:UTF-8 xml file shows GibberishUTF-8 xml 文件显示乱码
【发布时间】:2010-05-15 18:41:40
【问题描述】:

我有一个 UTF-8 编码的 xml 文件,它是从 Wordpress MySQL 数据库中导出的。

虽然文件保存为 UTF-8,并且编码是 UTF-8,但我得到的是乱码,而不是应该在其中的希伯来语文本,如下所示:

™×•×~ות

如何找到原始编码或字符集并将文本转换为正确的希伯来语?

PHP 的 mb_detect_encoding($str);返回 UTF-8

尝试了各种 php 编码函数,具有不同的设置和输入/输出字符集,但它们都只是打印不同的乱码块,例如:

ÃâÃËÃâ¢Ãâ¢ÃËÃ

�� ×שמ×

...有什么想法可以解决这个问题吗?

【问题讨论】:

    标签: php encoding utf-8 hebrew


    【解决方案1】:
    function convert($str) {
        $hebrew = array("א", "ב", "ג", "ד", "ה", "ו", "ז", "ח", "ט", "י", "כ", "ל", "מ", "נ", "ס", "ע", "פ", "צ", "ק", "ר", "ש", "ת", "ך", "ם", "ן", "ף", "ץ");
        $gibberish = array("à", "á", "â", "ã", "ä", "å", "æ", "ç", "è", "é", "ë", "ì", "î", "ð", "ñ", "ò", "ô", "ö", "÷", "ø", "ù", "ú", "ê", "í", "ï", "ó", "õ");
        return str_replace($gibberish, $hebrew, $str);
    }
    
    $hebrew_string = convert(utf8_encode($gibberish_string));
    

    【讨论】:

      【解决方案2】:

      如果您可以访问数据库,则可以通过将其导出为 latin1 并导入为 UTF8 来轻松修复它。就像suggested here一样。

      【讨论】:

        【解决方案3】:

        这与this 问题非常相似。

        据我所知,这是一个错位的 Unicode 字符串,其中每个 unicode 字符被编码为两个 unicode 字符。

        我提出的代码只是丢弃了空的高位字节,并从中重建了原始字节数组。该代码只是一个示例,在方法上非常非常简单,但应该可以帮助您实现目标。

        【讨论】:

          【解决方案4】:

          看看你的 php 文件,也许它不是 utf-8,这就是你的 xml 查询返回这个不需要的字符串的原因。

          【讨论】:

            猜你喜欢
            • 2011-03-16
            • 2011-07-10
            • 1970-01-01
            • 2015-02-26
            • 2012-11-07
            • 1970-01-01
            • 2016-08-14
            • 1970-01-01
            • 2013-07-14
            相关资源
            最近更新 更多