iT邦幫忙

0

C# UTF-8 轉 ISO-8859-1 問題 (已解決)

c#
cfox 2017-07-03 15:20:575949 瀏覽

大家好,
目前想要把 UTF-8 的文字檔轉成 ISO-8859-1 的格式
希望轉完後不要動到原始圖案 (如Ⓡ、®等)
嘗試以下方式撰寫:

// Transfer UTF-8 to ISO-8859-1
Encoding iso = Encoding.GetEncoding("iso-8859-1");
Encoding utf8 = Encoding.UTF8;
byte[] utfBytes = utf8.GetBytes(response);
byte[] isoBytes = Encoding.Convert(utf8, iso, utfBytes);
response = iso.GetString(isoBytes);

System.IO.File.WriteAllText(Filename, response, Encoding.GetEncoding("iso-8859-1"));
return true;

結果發現 WriteAllText 裡面的 Encoding.GetEncoding("iso-8859-1")
好像沒有作用。用 Notepad++ 開啟時還是 UTF-8

請問還有其他方式可以存成 ISO-8859-1 嗎??
謝謝

ps.
有試過將文字複製後,用 notepad++ 轉成 iso-8859-1 再貼回去並存檔
是可以正常顯示圖案的。(圖案有支援iso-8859-1)


結論:

自己犯傻了,在讀取至 response 時,寫成 Encoding.Default
應該要用 Encoding.UTF8 才對。
(雖然不知道為何會影響到輸出)

看更多先前的討論...收起先前的討論...
fillano iT邦超人 1 級 ‧ 2017-07-04 11:26:39 檢舉
https://zh.wikipedia.org/wiki/ISO/IEC_8859

你先看一下維基,確定你要可以轉的所謂「原始圖案」是否存在iso-8859-1裡面。
cfox iT邦新手 4 級 ‧ 2017-07-04 11:37:39 檢舉
有查過,確實包含在 iso-8859-1 裡面。
用 notepad++ 轉成 iso-8859-1,還是能正常顯示圖案。

請問如果不支援的話,圖案會變成亂碼?
檔案開啟時的格式應該也是iso-8859-1,而不是UTF-8對嗎?
不知為何 WriteAllText 已經指定 Encoding.GetEncoding("iso-8859-1"),開啟檔案時仍是 UTF-8.
fillano iT邦超人 1 級 ‧ 2017-07-04 14:39:32 檢舉
我試了一下沒問題耶?用notepad++打開,他的編碼是ANSI,®變成問號,但是去選正確的「字元集」就能正確顯示。(西歐=>8859-1)
cfox iT邦新手 4 級 ‧ 2017-07-04 15:40:45 檢舉
發現問題在哪了。
原先在讀取至 response 時,寫成了 Encoding.Default
應該要用 Encoding.UTF8 才對
(原來這樣也會影響輸出)
cfox iT邦新手 4 級 ‧ 2017-07-04 15:46:55 檢舉
感謝 fillano 大大的幫忙
怎麼找不到按讚還是給分的機制 XD

尚未有邦友回答

立即登入回答