RSS feed encoding


RSS feed encoding

我有一个从用户输入的数据生成的RSS提要。 有许多用户用日语输入文本,大多数时候没有问题。 但是,有一个特定的 RSS 源显示错误:

error on line 25 at column 25: Input is not proper UTF-8, indicate encoding !
Bytes: 0x0B 0x32 0x38 0x20

请注意,在此特定的 RSS 源中,这不是出现日语字符的第一个位置。

我见过其他答案错误:"输入不正确的 UTF-8,指示编码! 使用 PHP 的simplexml_load_string建议尝试更改编码或类似的东西,但我对为什么编码只在这个特定的提要上失败感到困惑,而且,如果是因为这个人输入日语以不同的方式编码, 我如何检测某人何时以不同的方式输入,并有选择地仅修复可能导致问题的那些。

编辑:根据这篇文章:http://www.localizingjapan.com/blog/2012/01/30/detecting-and-conveting-japanese-multibyte-encodings-in-php/

我尝试添加以下内容:

if (!mb_check_encoding($content, "UTF-8")) {
           $content = mb_convert_encoding($content, "UTF-8",
              "Shift-JIS, EUC-JP, JIS, SJIS, JIS-ms, eucJP-win, SJIS-win, ISO-2022-JP,
               ISO-2022-JP-MS, SJIS-mac, SJIS-Mobile#DOCOMO, SJIS-Mobile#KDDI,
               SJIS-Mobile#SOFTBANK, UTF-8-Mobile#DOCOMO, UTF-8-Mobile#KDDI-A,
               UTF-8-Mobile#KDDI-B, UTF-8-Mobile#SOFTBANK, ISO-2022-JP-MOBILE#KDDI");
        }

但是,它仍然报告未在utf8中正确编码。

Edit2:所以,我非常困惑,因为我只是让它记录了mb_detect_encoding认为文本是什么编码,并且它都以ASCII(必须是其他字段,因为日语显然不能是ASCII)和UTF-8返回。 你知道为什么它可以认为它是 UTF-8,但仍然得到这些编码错误吗?

确保已将用户输入正确编码为 UTF-8。

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

string utf8_encode ( string $data )