[英]Convert ISO-8859-2 to UTF-8 (Polish characters)
我正在嘗試解析一個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不支持它們嗎?
我通過將字符串更改為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'
似乎該文本已經在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。
<?php
$content = 'Gdzie są różnice';
$content = mb_convert_encoding($content, "ISO-8859-2", "UTF-8");
print $content;
?>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.