簡體   English   中英

將ISO-8859-2轉換為UTF-8(波蘭語字符)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM