2

文字セットが ISO-8859-2 であるという XML ファイル ( http://jstryczek.blox.pl/rss2 )を解析しようとしています。私のデータベースは UTF-8 なので、UTF-8 に変換したいと考えています。

これを行うには、文字列に対して次を実行します。

$content = iconv('ISO-8859-2', 'UTF-8//TRANSLIT', $content);

何らかの理由で、奇妙なエンコーディングが返されます。そのため、次のようになります。

Gdzie są różnice

次のようになります。

Gdzie sÄ róşnice

ポーランド語の文字が表示されない理由について説明はありますか? UTF-8 はそれらをサポートしていませんか?

4

3 に答える 3

6

文字列を JSON に変更することでこれを修正し、洗練された特殊記号をすべて HTML コードに置き換えます。結果の下に追加します。

        $specialChars = [
        '\u0105', # ą
        '\u0107', # ć
        '\u0119', # ę
        '\u0142', # ł
        '\u0144', # ń
        '\u00f3', # ó
        '\u015b', # ś
        '\u017a', # ź
        '\u017c', # ż
        '\u0104', # Ą
        '\u0106', # Ć
        '\u0118', # Ę
        '\u0141', # Ł
        '\u0143', # Ń
        '\u00d3', # Ó
        '\u015a', # Ś
        '\u0179', # Ż
        '\u017b', # Ż
    ];

    $polishHtmlCodes = [
        'ą', # ą
        'ć', # ć
        'ę', # ę
        'ł', # ł
        'ń', # ń
        'ó', # ó
        'ś', # ś
        'ź', # ź
        'ż', # ż
        'Ą', # Ą
        'Ć', # Ć
        'Ę', # Ę
        'Ł', # Ł
        'Ń', # Ń
        'Ó', # Ó
        'Ś', # Ś
        'Ź', # Ż
        'Ż', # Ż
    ];

    $result = str_replace($specialChars, $polishHtmlCodes, json_encode($string));
    var_dump(json_decode($result));

// prints
// e.g. 'Różowe okulary'
于 2016-05-23T14:02:00.073 に答える
2

このテキストは既に utf-8 でエンコードされているようですので、デコードする必要はありません。このファイルを utf-8 で保存して実行すると、次のようになります。

<?php
$content = 'Gdzie są różnice';
$content = iconv('ISO-8859-2', 'UTF-8//TRANSLIT', $content);
print $content;

私はこれを得た:

Gdzie sÄ róşnice

これは正確に間違ったテキストです。

テキストをそのまま保存するだけで、すでに utf-8 になっています。

于 2013-08-24T16:45:57.250 に答える
-1
<?php
$content = 'Gdzie są różnice';
$content = mb_convert_encoding($content, "ISO-8859-2", "UTF-8");
print $content;
?>
于 2015-06-01T13:33:24.993 に答える