iT邦幫忙

0

C# 如何將資料庫的每個字元從原本的(ascii編碼) 逐一 轉成 (utf8編碼)

  • 分享至 

  • xImage

C# 如何將資料庫的每個字元從原本的(ascii編碼) 逐一 轉成 (utf8編碼)

從資料庫讀取資料 轉換後 再存到txt文字檔案到桌面上

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
4
allenlwh
iT邦高手 1 級 ‧ 2022-01-04 17:01:07

文字檔存檔時,直接設定成UTF-8編碼,這會不會簡單一點。

WriteAllText(String, String, Encoding)

File.WriteAllText 方法

這個方式我已經試過,查看檔案確實會變成指定編碼的方式寫入,可是從資料庫撈出的資料嘗試用各種編碼方式都顯示"?" 或 奇怪的漢字的亂字,才在想會不會是只是存成檔案編碼而已並沒有一個一個逐一轉換...一直卡在無法正常顯示實在很奇怪...

allenlwh iT邦高手 1 級 ‧ 2022-01-05 15:27:37 檢舉

那就要往上查查,是不是資料庫的問題。
1.資料庫定序的問題
2.Insert資料時,存進去時就已經變成亂碼了
3.確認一下資料庫的欄位型態是varchar還是nvarchar(我有遇到簡體字存到varchar會變成亂碼)

1
淺水員
iT邦大師 6 級 ‧ 2022-01-04 17:43:43

如何將資料庫的每個字元從原本的(ascii編碼) 逐一 轉成 (utf8編碼)

ascii 只有 0~127,相容於 utf-8
不用轉換本身就是 utf-8 了
除非你拿到的東西並不是 ascii

看更多先前的回應...收起先前的回應...

查到是伺服端的編碼(u7ascii),嘗試過各種方法始終無法讓它正常顯示,不是出現方框裡面是? 或 "?" 或 漢字的亂字

淺水員 iT邦大師 6 級 ‧ 2022-01-05 14:22:05 檢舉

問一下資料庫是 Oracle 嗎?

淺水員
是Oracle沒錯喔

淺水員 iT邦大師 6 級 ‧ 2022-01-05 14:36:11 檢舉

我搜尋查到的好像是叫做「US7ASCII」
不過因為我沒用過那個資料庫
暫時沒有好的答案
也許你可以先搜尋看看 Oracle US7ASCII

淺水員 iT邦大師 6 級 ‧ 2022-01-05 14:42:55 檢舉

US7ASCII 看了一下好像仍然是 7 bit
只是有可能 db 在存取時直接當作 8bit 在讀寫而不做特別的處理

淺水員
從 Oracle 成功撈出 u7ascii編碼轉成big5的資料
目前已經可以取得中文了,只是要從C# 取得字串後轉碼成utf8之類的編碼讓電腦可以正常看到中文
有做過類似的方式可以提供方法嗎?

淺水員 iT邦大師 6 級 ‧ 2022-01-05 15:16:27 檢舉
1
Samuel
iT邦好手 1 級 ‧ 2022-01-05 09:06:50

一種情況DB源頭就有問題
要不要檢查看看SQL Server定序問題
https://coolmandiary.blogspot.com/2021/12/t-sql27where.html

我要發表回答

立即登入回答