如何让emacs正确显示GBK和BIG5编码的中文文本?

如何让emacs正确显示GBK和BIG5编码的中文文本?

我在 x64 Windows 10 上使用 Emacs 25.1,我想显示以 BIG5 和 GBK 编码以及 UTF 编码的中文纯文本文件,但是我发现 BIG5 编码文件中的字符显示为乱码,但 GBK 和 UTF-8 可以。我当前的字体/编码设置为.emacs

(set-language-environment 'utf-8)
(set-buffer-file-coding-system 'utf-8)
(set-keyboard-coding-system 'utf-8)
(prefer-coding-system 'utf-8)

;; font
(setq font-encoding-alist
 (append '(("gb2312.1980" . chinese-gbk)
       ("iso8859-1$" . iso-8859-1)
       ("iso8859-2$" . iso-8859-2)
       ("iso8859-3$" . iso-8859-3)
       ("iso8859-4$" . iso-8859-4)
       ("iso8859-5$" . iso-8859-5)
       ("iso8859-6$" . iso-8859-6)
       ("iso8859-7$" . iso-8859-7)
       ("iso8859-8$" . iso-8859-8)
       ("iso8859-9$" . iso-8859-9)
       ("iso8859-10$" . iso-8859-10)
       ("iso8859-11$" . iso-8859-11)
       ("iso8859-13$" . iso-8859-13)
       ("iso8859-14$" . iso-8859-14)
       ("iso8859-15$" . iso-8859-15)
       ("iso8859-16$" . iso-8859-16)
       ("ascii-0$" . ascii)
       ("gb2312.1980" . chinese-gb2312)
       ("gbk" . chinese-gbk)
       ("gb18030" unicode)
       ("jisx0208.1978" . japanese-jisx0208-1978)
       ("jisx0208" . japanese-jisx0208)
       ("jisx0201" . jisx0201)
       ("jisx0212" . japanese-jisx0212)
       ("ksx1001" . korean-ksc5601)
       ("ksc5601.1987" . korean-ksc5601)
       ("cns11643.1992.*1" . chinese-cns11643-1)
       ("cns11643.1992.*2" . chinese-cns11643-2)
       ("cns11643.1992.*3" . chinese-cns11643-3)
       ("cns11643.1992.*4" . chinese-cns11643-4)
       ("cns11643.1992.*5" . chinese-cns11643-5)
       ("cns11643.1992.*6" . chinese-cns11643-6)
       ("cns11643.1992.*7" . chinese-cns11643-7)
       ("cns11643.92p1-0" . chinese-cns11643-1)
       ("cns11643.92p2-0" . chinese-cns11643-2)
       ("cns11643.92p3-0" . chinese-cns11643-3)
       ("cns11643.92p4-0" . chinese-cns11643-4)
       ("cns11643.92p5-0" . chinese-cns11643-5)
       ("cns11643.92p6-0" . chinese-cns11643-6)
       ("cns11643.92p7-0" . chinese-cns11643-7)
       ("big5" . big5)
       ("viscii" . viscii)
       ("tis620" . tis620-2533)
       ("microsoft-cp1251" . windows-1251)
       ("koi8-r" . koi8-r)
       ("jisx0213.2000-1" . japanese-jisx0213-1)
       ("jisx0213.2000-2" . japanese-jisx0213-2)
       ("jisx0213.2004-1" . japanese-jisx0213\.2004-1)
       ("iso10646-1$" unicode-bmp)
       ("iso10646.indian-1" unicode-bmp)
       ("unicode-bmp" unicode-bmp)
       ("abobe-symbol" . symbol)
       ("sisheng_cwnn" . chinese-sisheng)
       ("mulearabic-0" . arabic-digit)
       ("mulearabic-1" . arabic-1-column)
       ("mulearabic-2" . arabic-2-column)
       ("muleipa" . ipa)
       ("ethiopic-unicode" unicode-bmp . ethiopic)
       ("is13194-devanagari" . indian-is13194)
       ("Devanagari-CDAC" . devanagari-cdac)
       ("Sanskrit-CDAC" . sanskrit-cdac)
       ("Bengali-CDAC" . bengali-cdac)
       ("Assamese-CDAC" . assamese-cdac)
       ("Punjabi-CDAC" . punjabi-cdac)
       ("Gujarati-CDAC" . gujarati-cdac)
       ("Oriya-CDAC" . oriya-cdac)
       ("Tamil-CDAC" . tamil-cdac)
       ("Telugu-CDAC" . telugu-cdac)
       ("Kannada-CDAC" . kannada-cdac)
       ("Malayalam-CDAC" . malayalam-cdac)
       ("Devanagari-Akruti" . devanagari-akruti)
       ("Bengali-Akruti" . bengali-akruti)
       ("Punjabi-Akruti" . punjabi-akruti)
       ("Gujarati-Akruti" . gujarati-akruti)
       ("Oriya-Akruti" . oriya-akruti)
       ("Tamil-Akruti" . tamil-akruti)
       ("Telugu-Akruti" . telugu-akruti)
       ("Kannada-Akruti" . kannada-akruti)
       ("Malayalam-Akruti" . malayalam-akruti)
       ("muleindian-2" . indian-2-column)
       ("muleindian-1" . indian-1-column)
       ("mulelao-1" . mule-lao)
       ("muletibetan-2" . tibetan)
       ("muletibetan-0" . tibetan)
       ("muletibetan-1" . tibetan-1-column))
     font-encoding-alist)
)
(create-fontset-from-fontset-spec
 (concat
  "-*-consolas-medium-r-normal-*-12-*-*-*-*-*-fontset-consolas,"
  "chinese-gb2312:-*-Microsoft Jhenghei-medium-r-*-*-12-*-*-*-c-*-gb2312*-*,"
  "mule-unicode-0100-24ff:-*-Microsoft Jhenghei-medium-r-*-*-12-*-*-*-c-*-iso10646*-*,"
  "chinese-big5-1:-*-Microsoft Jhenghei-medium-r-*-*-14-*-*-*-*-*-big5-0," 
  "chinese-big5-2:-*-Microsoft Jhenghei-medium-r-*-*-14-*-*-*-*-*-big5-0,"
  "korean-ksc5601:-*-Malgun Gothic-medium-r-*-*-12-*-*-*-*-*-ksc5601*-*,"
  "chinese-cns11643-5:-*-Microsoft Jhenghei-medium-r-*-*-12-*-*-*-c-*-gbk*-*,"
  "chinese-cns11643-6:-*-Microsoft Jhenghei-medium-r-*-*-12-*-*-*-c-*-gbk*-*,"
  "chinese-cns11643-7:-*-Microsoft Jhenghei-medium-r-*-*-12-*-*-*-c-*-gbk*-*,"
  "sjis:-*-Meiryo-medium-r-normal--12-*-jisx0208*-*"
 ))

;; Chinese Font
;  cjk-misc gb18030 chinese-gbk chinese-gb2312
(dolist (charset '(han cjk-misc chinese-gbk))
  (set-fontset-font t ;; (frame-parameter nil 'font)
        charset
        (if (string-equal system-type "windows-nt")
            (font-spec :family "Microsoft Jhenghei")
          (font-spec :family "Noto Sans CJK Regular"))))

(set-default-font "fontset-consolas")
 (set-fontset-font "fontset-consolas"
  'gb18030 '("Microsoft Jhenghei" . "unicode-bmp")) ;; Chinese

那么如何在 Emacs 25 中显示所有不同的中文编码?提前致谢。

相关内容