我正在尝试解析一个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不支持吗?
答案 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;
?>