Bagaimana cara menampilkan karakter Cina dengan benar pada mesin Red-Hat jarak jauh?

8

Saya menggunakan Ubuntu14.04 untuk terhubung ke host jarak jauh.

Yang versinya adalah:

Linux versi 2.6.32-431.11.5.el6.yyyzzz.x86_64 (versi gcc 4.4.7 20120313 (Red Hat 4.4.7-4) (GCC)) # 1 SMP Kamis 3 Juli 09:42:34 CST 2014

File unggahan saya di mesin itu tidak akan menampilkan karakter Mandarin dengan benar. Dan saya membuka file, ketik Karakter Cina secara acak dengan Ubuntu ibus input method. Dan itu menunjukkan:

~R~V�~K~B~I~W个~I~N~T�饭~T~E

Saya mencari secara online dan mencoba 2 metode berikut:

1: periksa lokasi

It shows:

LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC=en_US.UTF-8
LC_TIME=en_US.UTF-8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY=en_US.UTF-8
LC_MESSAGES="en_US.UTF-8"
LC_PAPER=en_US.UTF-8
LC_NAME=en_US.UTF-8
LC_ADDRESS=en_US.UTF-8
LC_TELEPHONE=en_US.UTF-8
LC_MEASUREMENT=en_US.UTF-8
LC_IDENTIFICATION=en_US.UTF-8
LC_ALL=

Sepertinya tidak masalah.

2: instal paket dukungan Bahasa Cina

Aku melakukannya:

yum install "@Chinese Support"

Itu menginstal 178 juta file di mesin itu.

Setelah itu, saya membuka file lain, dan mencoba mengetik beberapa bahasa Mandarin dengan ibus. Tapi masalahnya tetap, bagaimana mengatasinya?


update1 Saya melakukan riset lebih lanjut setelah. Saya menemukan bahwa beberapa karakter dapat diketik dengan benar (melalui metode input Pinyin, ibus). Suka:

起 度 顿 客

Mereka semua sesuai dengan Pinyin mereka. Tapi ada ruang yang dihasilkan secara otomatis setelah setiap karakter (tidak diketik oleh saya).

Jika saya mencoba mengetik 启 , 杜 , 盾 , 刻 (mereka memiliki Pinyin yang sama dengan 4 karakter Cina di atas). Saya mendapatkan:

�~P�~]~\ ~[� ~H�

Untuk pengalaman saya, jika konversi kode benar-benar kacau. Ketika saya mengetik Pinyin, saya akan mendapatkan beberapa karakter berkabel yang terlihat seperti Cina tetapi sebenarnya tidak, dan mereka tidak akan pernah sesuai dengan Pinyin yang saya ketikkan.

Kali ini, masalahnya sedikit berbeda. Saya dapat mengetik beberapa karakter dengan benar (dengan ruang yang dihasilkan sistem), dan yang lainnya tidak dapat diuraikan.

Zen
sumber

Jawaban:

5

Pada dasarnya, ini mungkin menjadi masalah ketidaksesuaian antara lokal Anda, yang diatur untuk UTF-8, dan encoding file karakter Chineses Anda, yang dapat dikodekan dalam gbk, gb2312, gb18030, atau Big-5.

Semua pengkodean yang tercantum di atas tidak kompatibel dengan UTF-8.

Sekarang, anggaplah gbkpenyandian file Anda. Jadi ketika Anda mencoba untuk menunjukkan konten file, file yang gbkdikodekan ditafsirkan sebagai UTF-8file, yang menyebabkan omong kosong.

Inilah solusinya.

  • Gunakan luit. (Lebih disukai)

    $ whatis luit
    luit (1)             - Locale and ISO 2022 support for Unicode terminals
    

    luit -encoding gbk cat a_chinese_file.txt

Karena sebagian besar (jika tidak setiap) pengkodean yang digunakan kompatibel dengan ASCII, dan jika Anda hanya memerlukan karakter dalam ASCIIdan pengkodean lain, Anda dapat menggunakan dua metode berikut.

  • Ubah pengkodean terminal Anda

    Anda dapat mempertimbangkannya karena metode ini tidak memerlukan paket tambahan untuk diinstal.

  • Ubah lokal Anda

    Tapi saya pikir ini mengharuskan Anda untuk menginstal lokal yang sesuai.


Beberapa detail tentang penyandian bahasa Cina yang disebutkan di atas.

  • gbk, gb2312, gb18030Adalah pengkodean untuk Cina Sederhana.

    Jika Anda tidak yakin encoding tertentu yang digunakan file Anda, anggap saja gb18030.

    Jumlah karakter yang terkandung dalam setiap pengkodean berikut ini: gb18030> gbk> gb2312. Dan pengkodean superior adalah superset dari apa yang mengikuti.

  • Big-5 adalah penyandian untuk Bahasa Cina Tradisional.

Terlebih lagi, penyandian untuk Bahasa Cina Sederhana terkadang disebut sebagai CP936(Kode Halaman 936, saya pikir nama ini berasal dari Windows).

pallxk
sumber
Tentang masalah terminal, saya dapat menunjukkan karakter Mandarin dengan benar di terminal seolah-olah file itu ada di komputer lokal saya, tetapi ketika scp ke mesin jarak jauh, karakter menjadi tidak dapat dikenali.
Zen
Ngomong-ngomong, ketika menjalankan perintah luit, saya mendapat "Peringatan: tidak dapat mengatur lokal. Segmentasi kesalahan"
Zen
@ Zen Ada terlalu banyak masalah untuk menangani file yang tidak disandikan UTF-8. Dan saran saya adalah untuk mengkonversi file karakter Cina Anda untuk dikodekan UTF-8jika Anda memiliki kendali atas itu. Maka semuanya harus baik-baik saja.
pallxk
Maksudmu luit dapat mengubahnya?
Zen
luittidak bisa. Gunakan beberapa alat lain. Saya tidak yakin alat tertentu mana yang digunakan di linux. Di Windows, Anda dapat menggunakan Notepad++.
pallxk
0

Saya baru saja menambahkan baris ini di ~/.bash_profile:

export LC_ALL=en_US.UTF-8
Dai Kaixian
sumber
-1

Saya pikir Anda perlu mengubah dua file sebagai

1) Dalam /etc/default/locale

LANG=" en_US.UTF-8"
LANGUAGE=" en_US:en.UTF-8"

2) Dalam ~/.pam_environment

LANG=en_US.UTF-8
LANGUAGE=en_US.UTF-8

3) reboot

Paul Chen
sumber