iT邦幫忙

0

怎樣偵測一個 xlsx 檔案(不是.csv) 內是正在用什麼編碼(encoding)?

小弟有一個 xlsx 檔案 (不是 .csv)
我不知道 xlsx 內的中文字是什麼編碼
應該用什麼方法 (最好不是 programming 的方法)
去偵測該 xlsx 用了什麼編碼

因為小弟使用 c# import 這個 xlsx 檔案入 mysql database 後
(mysql database 是 5.7 用 utf8_general_ci 組成 table)
發現 import 後的 table 內充滿 怪符號 都不知道該如何做, 才能使 import 入的中文變回正常,懇請各位高人指點一下, 謝謝。

看更多先前的討論...收起先前的討論...
都是unicode, utf-8,問題出在你的瀏覽資料用的工具編碼可能不適合用來看中文,不然不會有這個狀況
你的意思是 : xlsx 內 是 utf8, 而在 mysql table 內也是 utf8 , 只不過我用的 application 去瀏覽 mysql table 內的中文是不合適用來看 utf8 的中文字???
稍為補充一下:我的同事用 c# 從這個table read 出來的中文字也是 全都是問號 .... 如果 table 內都是 utf8 又為何 read 出來也是怪符號.....
ccutmis iT邦高手 2 級 ‧ 2019-08-05 16:39:01 檢舉
https://dotblogs.com.tw/orhuang/2011/06/21/29367
ccutmis iT邦高手 2 級 ‧ 2019-08-05 16:43:32 檢舉
我是沒學過C# 不過程式不是有辦法把中文轉成內碼或是把內碼轉成中文嗎,轉成內碼最基本可以得知它是否為unicode(6碼)或Big5(4碼)或GB2312(4碼),如果你要把excel內容塞進utf8_general_ci編碼的資料庫,應該在塞進去之前先確定內容已經轉成unicode,以上是個人淺見。
我要先知道你的亂碼是何種亂碼?是一堆問號的?還是看不懂的中文字?截圖看看

至於C#,已不使用ASCII編碼,也就沒GB或BIG5碼的問題,
ccutmis iT邦高手 2 級 ‧ 2019-08-05 17:14:49 檢舉
我的想法是來自於
早期Excel 預設是用 ANSI 的方式來進行檔案的開啟及儲存,繁體中文使用 ANSI 在 Windows 的電腦中的編碼就是 Big5。如果客戶端是用簡體的Windows電腦則編碼就會是GB2312之類的
如果你的C#讀到這類用Big5編碼的excel檔並直接把它塞進資料庫的結果就會像樓主說的那樣了,
其實有個比較簡單解決方式就是把這個xlsx匯出csv並儲存為unicode格式,編碼應該就會自動從big5轉成unicode了,而樓主需要改的程式就是把匯入xlsx改成匯入csv而已,感覺是不是簡單多了XD
fillano iT邦超人 1 級 ‧ 2019-08-06 09:17:30 檢舉
請參考ECMA-376。xlsx是一個zip archive,裡面主要是xml檔。通常xml的編碼是utf-8。

你要不要說一下你用什麼Library來做import?你要驗證的話,並不需要輸入到資料庫,可以先在輸入之前先把內容log起來驗證一下看看。

總之,把問題講更清楚一點的話,對於回答是有幫助的。
今天講清楚一下細節
c# 部分是以 oledbadapter 方法 寫入 DataTable 然後 執行 query 寫入 table
因為這一部分是我上司寫, 我不太方便問他取來看 (.....)
這部分也證實由 xlsx 讀取後放入 DataTable 也能正常 output 中字
xlsx 內的中文字已經證實是 utf8 : 因為我使用 navicat 工具 import 入 table 中字是正常顯示 (該 imported table 是 utf8_general_ci 及所有 column 也是 utf8_general_ci)
但運行上司的 code import 後, table 所有中字 仍是全部都是 問號....
上司的 code 上次也曾運行是完全沒有問題, 不知為何不能.... 沒有改動 code
雷伊 iT邦高手 1 級 ‧ 2019-08-07 13:36:55 檢舉
轉成csv後也是亂碼?
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友回答

立即登入回答