2016-09-26 54 views
1

我有一個csv,我從我的供應商那裏得到,他們編碼了一個UTF-8字符串,現在包含黑色問號。我嘗試將其轉換回來,但沒有運氣。nodejs UTF-8編碼的字符串有黑色問號

var common    = require('./common/index.js'); 
var fs = require('fs'); 
var Iconv = require('iconv').Iconv; 
var encoding = require('encoding'); 
var iconv = new Iconv('UTF-8', 'ISO-8859-1'); 
var detectCharacterEncoding = require('detect-character-encoding'); 
common.fileHandler(
    'default.csv', 
    function(dataSet) { 
     var fileBuffer = fs.readFileSync('file.txt'); 
     var charsetMatch = detectCharacterEncoding(fileBuffer); 
     console.log(charsetMatch); 
     console.log(encoding.convert(dataSet[0].description, 'UTF-8', 'ISO-8859-1')) 
    } 
) 

回報

{ encoding: 'UTF-8', confidence: 100 } 
<Buffer c3 bd 20 53 79 6e 63 20 64 61 74 61 20 61 6e 64 20 66 61 73 74 20 63 68 61 72 67 69 6e 67 3c 62 72 2f 3e c3 bd 20 50 72 65 6d 69 75 6d 20 61 6c 75 6d 69 ...> 

任何幫助非常感謝

+0

有時當你一旦將文檔轉換爲另一種編碼格式,所有的原始編碼數據消失了,你不能做這個,如果後鬆開你的編碼數據你有這個csv的原始版本(尚未轉換),那麼你將有機會將其轉換爲適當的編碼格式 – neuronet

+0

'common.fileHandler'究竟做了什麼?什麼是'dataSet'?你使用'file.txt'編碼,但轉換'dataSet [0] .description',這似乎是從'default.csv'創建的?所有這些(不同)的東西呢? – Thomas

+0

@neurnet謝謝你擊中了頭部的指甲,我​​從供應商處收到的實際csv編碼爲{編碼:'ISO-8859-1',置信度:29} 我在網上閱讀了很多,從'ISO-8859-1'轉換爲UTF-8,反之亦然,但我似乎無法將其轉換回去或刪除字符,谷歌商家中心(我經過驗證後將數據導入)抱怨雙重UTF8編碼 – user5569354

回答

2

如果你沒有原始文件(轉換之前),你都試過了,但沒有結果,你可以隨時更換您的問號與適當的utf8字符:)

只是複製問號並將其粘貼到您的代碼(複製到您的編輯器)

someContent.replace('paste_question_mark_here','ą'); 

這是最後的希望了,如果你轉換