簡體   English   中英

Node.js將字符串從ISO-8859-2轉換為UTF-8

[英]Node.js convert string from ISO-8859-2 to UTF-8

當我通過Node.js 請求下載頁面內容並且內容通過ISO-8859-2編碼時,無法將其轉換為UTF-8

我正在使用node-iconv

碼:

request('https://www.jakpsatweb.cz', function(err, resp, body){
    const title = regexToRetrieveTitle(body);
    const iconv = new Iconv('ISO-8859-2', 'UTF-8');
    const buffer = iconv.convert(title);
    console.log(buffer);
    console.log(buffer.toString('UTF8'));
})

安慰:

<Buffer 52 65 6b 6c 61 6d 61 3a 20 6a 61 6b 20 66 75 6e 67 75 6a 65 20 77 65 62 6f 76 c4 8f c5 bc cb 9d 20 72 65 6b 6c 61 6d 61>
Reklama: jak funguje webovďż˝ reklama

預期結果:

Reklama: jak funguje webová reklama

有人知道哪里出問題嗎?

編輯:

例如,我下載了此頁面 我通過元標記(也是Chrome瀏覽器)識別了ISO-8859-2,我需要轉換頁面內容並將其保存到數據庫。 我的數據庫是UTF-8,因此我需要對其進行編碼。

從ISO-8859-2到UTF-8的轉換效果很好。 內容錯誤的是輸入(標題變量):標題包含字節EF BF BD。 這意味着標題已經采用UTF-8編碼,但是在您希望字母á出現的地方加上了U + FFFD(替換字符)(帶有ACUTE的拉丁文小寫字母A)。

現在,原始網頁https://www.jakpsatweb.cz/reklama/index.html已在ISO-8859-2中正確編碼,並且在<head>部分中還具有必需的字符集聲明。

因此,問題必須出在下載網頁(NodeJS)或regexToRetrieveTitle函數的軟件中。

問題出在Node.js請求中。 默認情況下,編碼設置為UTF8。 我必須將其設置為null ,現在一切正常。

request({ uri: 'https://www.jakpsatweb.cz', encoding: null}, function(err, resp, body){
    .....
})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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