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

时间:2013-08-24 16:02:58

标签: 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);

出于某种原因,我正在回复一个奇怪的编码,所以:

Gdzie są różnice

来自:

Gdzie sÄ róşnice

是否有解释为什么波兰人物没有通过? UTF-8不支持吗?

3 个答案:

答案 0 :(得分:3)

我通过将字符串更改为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'

答案 1 :(得分:1)

似乎这个文本已经用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。

答案 2 :(得分:-1)

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