參考鏈接
日文的文本出現亂碼
前言
遇到了一個txt日文文本,出現大面積亂碼。而且不懂日文,亂碼的話,連翻譯軟件也無法使用。【上圖爲測試文本】
以下的解釋與解決辦法等爲自己的想法,並不一定準確。
目錄
一、簡單的解釋 ↶
1. Wins10 文本文件的默認編碼是 ANSI 編碼【統稱】。直接保存就是這個編碼,當然可以自行更改 Unicode 碼等。
在日文操作系統中,ANSI 編碼代表的是 Shift_JIS 編碼;在簡體中文操作系統中,ANSI 編碼代表 GBK 編碼。所以我們打開一個日語環境下保存爲 ANSI 編碼文本時,在中文環境下顯示會出現亂碼。日文編碼對應日文字,中文編碼應該對應的中文字【這可以解釋爲什麼打開的文本都是看不懂,但是確實爲漢字】;日文原來的編碼以中文編碼的環境肯定顯示有問題,導致的結果就是出現亂碼。
2. 如何較爲直觀的解釋這個過程呢【基於 Python 簡易代碼】
模擬在日文環境下保存,在中文環境下顯示的過程:
① 創建一個 raw 變量,裏面是一句日文。
>>>raw = '最初にお読みください'
'最初にお読みください'
這個操作有點像,你在文本中輸入看的懂的文字。
② 將 raw 編碼爲 ansi 編碼,也就是對應日文系統下的 Shift_JIS 編碼。
>>> raw_encode = raw.encode('shift-jis')
>>> raw_encode
b'\x8d\xc5\x8f\x89\x82\xc9\x82\xa8\x93\xc7\x82\xdd\x82\xad\x82\xbe\x82\xb3\x82\xa2'
這個操作相當於將文件以二進制形式保存在電腦上。
③ 將 raw_encode 變量以 gbk 的形式解碼【解碼與編碼是相對的】
>>> raw_encode.decode('gbk')
'嵟弶偵偍撉傒偔偩偝偄'
這個操作則對應了用戶在中文環境中,打開日文環境下所保存文本時的情景,理所當然的出現了亂碼。
還原過程,當然就是反過來操作一遍
>>> raw = '嵟弶偵偍撉傒偔偩偝偄'
>>> raw_encode = raw.encode('gbk')
>>> raw_encode.decode('shift-jis')
'最初にお読みください'
通過這樣的說明,我們就知道了背後大致的原理,那麼就可以解決文本出現亂碼的情況了。
【當然這個例子是基於原來編碼是 shift-jis 編碼的,如果是別的編碼這樣操作就會出現問題】
二、如何解決 ↶
- 直接用瀏覽器打開文本文件。
這個有的時候能成功,有點時候失敗,我也不清楚,感覺文字越長越複雜,越容易直接翻譯爲原文【chrome內核】;IE的話右鍵改個編碼有時候也行的。可以嘗試一下。 - 文件名解析&批量文件名重命名 v1.3
確實好用,方便。懶人必備。其它功能可以自行研究。下載方式就放在最後。
- 可以自己動手寫解碼程序
>>> a = '''偁偺偹偣偐偄偼偠偮偼偮側偑偭偰偄傞傫偩偭偰
偩偐傜偨偲偊偼側傟偰偟傑偭偰傕傒傫側傂偲傝偠傖側偄
偨偄偣偮側傂偲偲偼偄偮傑偱傕偢偭偲偳偙偐偱偮側偑偭偰偄傞偺偝'''
>>> a.encode('gbk').decode('shift-jis')
'あのねせかいはじつはつながっているんだって\nだからたとえはなれてしまってもみんなひとりじゃない\nたいせつなひととはいつまでもずっとどこかでつながっているのさ'
>>> print(a.encode('gbk').decode('shift-jis'))
あのねせかいはじつはつながっているんだって
だからたとえはなれてしまってもみんなひとりじゃない
たいせつなひととはいつまでもずっとどこかでつながっているのさ
三、附件 ↶
☛ 附件
提取碼:g9fp
四、總結 ↶
隨便寫一寫,並記錄在博客中。
點我回頂部 ☚
Fin.