我有一个UTF-8编码的xml文件,它是从Wordpress MySQL数据库导出的。
虽然文件保存为UTF-8,并且编码为UTF-8,但我得到的是胡言乱语,而不是应该在那里的希伯来语文本,如下所示:
™×•×〜×וª
如何找到原始编码或字符集并将文本转换为正确的希伯来语?
PHP的mb_detect_encoding($ str);返回UTF-8
尝试了各种各样的php编码函数,具有不同的设置和输入/输出字符集,但它们都打印出不同的乱码块,如:
ÃâÃËÃ⢢AA AEA
和
×שמ×
......任何想法如何解决这个问题?
答案 0 :(得分:2)
function convert($str) {
$hebrew = array("א", "ב", "ג", "ד", "ה", "ו", "ז", "ח", "ט", "י", "כ", "ל", "מ", "נ", "ס", "ע", "פ", "צ", "ק", "ר", "ש", "ת", "ך", "ם", "ן", "ף", "ץ");
$gibberish = array("à", "á", "â", "ã", "ä", "å", "æ", "ç", "è", "é", "ë", "ì", "î", "ð", "ñ", "ò", "ô", "ö", "÷", "ø", "ù", "ú", "ê", "í", "ï", "ó", "õ");
return str_replace($gibberish, $hebrew, $str);
}
$hebrew_string = convert(utf8_encode($gibberish_string));
答案 1 :(得分:1)
如果您有权访问数据库,可以通过将其导出为latin1并导入为UTF8来轻松修复它。一如既往suggested here。
答案 2 :(得分:0)
这与this问题非常相似。
从我所看到的,这是一个错误的Unicode字符串,其中每个unicode字符被编码为两个unicode字符。
我想出的代码只是丢弃了空的高位字节并从中重建了原始的字节数组。代码只是一个例子,并且非常方法简单,但应该帮助你实现目标。
答案 3 :(得分:0)
看看你的php文件,也许它不是utf-8,这就是你的xml查询返回这个不需要的字符串的原因。