UTF-8编码的XML文件显示乱码

3
我有一个UTF-8编码的XML文件,它是从WordPress MySQL数据库中导出的。尽管该文件已保存为UTF-8,并且编码方式也是UTF-8,但我得到的却是乱码而不是应该在其中的希伯来文本,看起来像这样: ™×•×˜×•×ª。如何找到原始编码或字符集并将文本转换为正确的希伯来语?PHP的mb_detect_encoding($str);返回UTF-8。尝试了各种PHP编码函数,使用不同的设置和输入/输出字符集,但它们都只打印出不同外观的乱码块,例如:ÃâÃËÃâ¢Ãâ¢ÃËà 和 �� ×שמ×。有什么建议吗?
4个回答

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

$hebrew_string = convert(utf8_encode($gibberish_string));

1

如果您可以访问数据库,您可以轻松地将其导出为Latin1格式并导入为UTF8格式来解决这个问题。正如在此处建议的那样


0
这很类似于this问题。
从我所看到的,这是一个被扭曲的Unicode字符串,其中每个Unicode字符都被编码为两个Unicode字符。
我想到的代码只是丢弃了空的高阶字节,并从中重新构建原始字节数组。这段代码只是一个示例,方法非常简单,但应该能帮助你理解。

0

请检查您的php文件,可能它不是utf-8编码,这就是为什么您的xml查询返回了这个不需要的字符串的原因。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接