Perilaku Aneh dengan Karakter Unicode di Windows

1

Ok, saya tidak tahu apakah ini pertanyaan pemrograman, tapi tentu saja itu pertanyaan teknis, jadi saya bertanya di sini. Saya sedang mengerjakan beberapa hal internasionalisasi dalam kode PHP saya, dan untuk memastikan bahwa HTML yang saya hasilkan menunjukkan Unicode dengan benar berdasarkan pengkodean dan hal-hal yang saya putuskan untuk menambahkan beberapa teks berbahasa Mandarin ke halaman PHP saya, yang kemudian menggemakannya ke dalam browser untuk menyelesaikan test case saya.

Jadi saya pergi ke google dan mengetik "Cina", menyalin teks China pertama yang dikembalikan pencariannya (yang dulu 汉语/漢語). Saya kemudian menyalinnya ke Notepad++editor saya, dan yang mengejutkan saya muncul sebagai kotak yang mirip [][]/[][]. Jadi saya pikir penyandiannya Notepad++kacau dan saya mengubah penyandiannya menjadi , UTF-8dan UCStidak ada yang berhasil. Saya melakukannya dengan segar dalam file yang baru disandikan, masih saya punya kotak. Konten yang sama ketika saya tempelkan ke Googledan StackOverFlow(seperti yang saya lakukan dalam posting ini) muncul bahasa Cina yang benar!

Saya bahkan membuka Windows Clipboard Viewerdan konten diwakili di Clipboard sebagai kotak! Saya mencoba menempelkannya ke Windows Explorer address bardan menggunakan untuk mengubah nama file, tapi saya masih mendapatkan kotak. Tapi itu muncul dengan benar ketika disisipkan ke saya Chrome Browser address bar!

Apakah ini masalah Windows? Karena saya dapat menempelkannya dengan benar dalam SO, data dalam memori harus disandikan dengan benar, bukan? Tetapi jika itu sebabnya mengapa ini muncul sebagai kotak di Clipboard Viewer?

Saya bingung di sini ... Ngomong-ngomong, saya menggunakan Windows XP with SP3.

(Saya mengajukan pertanyaan ini di sini, bahkan jika itu bukan program, karena mencegah saya menjalankan kasus pengujian pemrograman saya ..)

open_sourse
sumber

Jawaban:

0

Alasan mengapa Notepad ++ tidak menunjukkan karakter yang benar mungkin karena pengkodean dokumen adalah "ANSI". Karena karakter Cina tidak dapat diwakili dalam “ANSI”, maka mereka munged. Notepad ++ bekerja aneh dengan penyandian. Tetapi solusi sederhana adalah mengatur, melalui menu-nya, pengkodean ke UTF-8 sebelum menempelkan apapun.

Dalam konteks lain, tampilan karakter Cina mungkin gagal karena rendering menggunakan font yang tidak mengandungnya. Ada variasi besar di sini. Banyak program dapat kembali ke font lain jika font utama tidak mengandung beberapa karakter yang muncul dalam teks.

Jukka K. Korpela
sumber
Meskipun masalahnya tidak diperbaiki, jawaban Anda masuk akal ... terima kasih. Saya harus memperbaikinya dengan membuat formulir dan menyalin menempelkan karakter ke dalamnya dan kemudian mencetaknya.
Seharusnya begitu. Saya sering mengalami masalah ini dengan Notepad ++. Setelah mengubah pengkodean dari ANSI ke UTF-8, Anda harus menyalin ulang teks - hanya menyisipkan kembali tidak cukup.
1

Dengan salinan Bahasa Inggris Windows XP, Anda harus secara eksplisit memberi tahu Windows bahwa Anda ingin dukungan tambahan untuk skrip yang lebih kompleks. Saya tidak memiliki kotak XP di depan saya, tetapi coba mulai di Control Panel -> Pengaturan Regional, dan cari opsi untuk menginstal dukungan teks internasional. Anda mungkin memerlukan media instalasi asli Anda.

Langkah ini akan menginstal font dan tabel tambahan yang dibutuhkan Windows. Anda melihatnya bekerja di halaman web karena browser dari era XP cenderung melakukan banyak pekerjaan sendiri. Sebagian besar aplikasi lain mengharapkan Windows melakukan semua penautan font dan fungsi font fallback, dan Windows XP tidak menginstal semua dukungan secara default.

Saya percaya versi Windows yang lebih baru, seperti Vista dan 7 menginstal semua font dan tabel secara default.

Adrian McCarthy
sumber
Terima kasih atas sarannya Adrian - Saya pasti akan memeriksanya!