エンコードされた文字列をutf-8に変換する際に問題があります。HTMLエンティティからUTF-8への変換
ドキュメンテーションによると、数字のHTMLエンティティを使用してエンコードされたUnicode文字列がリストされています。いくつかは:
$str = 'WÖGER'; // seems to be WÖGER
$str = 'Jürgen'; // seems to be Jürgen
$str = 'POßNITZ'; // seems to be POßNITZ
$str = 'SCHLÄGER'; // seems to be SCHLÄGER
私はそれらをデコードしてutf-8に変換したいと思います。
mb_convert_encoding()とHTML-ENTITIES
paramとhtml_entity_decode()の両方を試しました。私の最良の結果は、予想外であった。
html_entity_decode($str, ENT_COMPAT | ENT_HTML401, 'ISO-8859-1');
、それはJürgen
successfullyをデコード。しかし、私はこのリストから他の文字列をデコードする運がありません。私はISO-8859-1ウムラウト用のテーブルとHTMLコードを見て、私のリストにあるものとは異なっています。
私の質問は、いくつかの明らかなデコードのステップがないか、ソースの文字列に何か問題がありますか?
更新(2016-06-27):元の文字列は間違ってエンコードされていました。これらの文字列はLatin-1コンテキストでUTF-8値を読み取った後、個々の1バイト文字を16進数エンコードとしてエンコードした結果で、ドイツ語のウムラウトü
はü
になり、別々の2文字としてエンコードされました。受け入れられた回答は、それらをUTF-8にまっすぐにデコードします。
ISO-8859ではなく、* UTF-8 *文字列を使用したいと思っていました。なぜISO-8859にデコードしていますか? – deceze
その文字列は_really_から来ていますか?ファイルを読み込んだ後、コンテンツをHTMLエンティティにエンコードするように見えますか? @nj_は "_unicode文字はコードポイントで表現されるべきで、個々のUTF-8バイトをエンコードするのではなく、"と書かれていますが、間違って修復しようとしています。 – JosefZ
@deceze実際にUTF-8が欲しいのですが、私は、異なるエンコーディングを使って有効なUTF-8結果(eval.inページはUTF-8である)を得て、 8は誤った発音区別符号を返します。[eval in](https://eval.in/593768)。 –