将 ISO-8859-2 转换为 UTF-8(波兰语字符)

huk*_*kir 2 php character-encoding

我正在尝试解析一个 XML 文件(http://jstryczek.blox.pl/rss2),该文件表示其字符集为 ISO-8859-2。我的数据库是 UTF-8,所以我想把它转换成 UTF-8。

为此,我在字符串上运行以下命令:

$content = iconv('ISO-8859-2', 'UTF-8//TRANSLIT', $content);
Run Code Online (Sandbox Code Playgroud)

出于某种原因,我得到了一个奇怪的编码,所以:

Gdzie s? ró?nice
Run Code Online (Sandbox Code Playgroud)

通过如下:

Gdzie sÄ r????nice
Run Code Online (Sandbox Code Playgroud)

有没有解释为什么波兰字符没有通过?UTF-8 不支持吗?

R P*_*eta 5

我通过将字符串更改为 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'
Run Code Online (Sandbox Code Playgroud)