Masalah apa yang membuat orang menggunakan pengkodean khusus Jepang dan bukan Unicode?

24

Di tempat kerja saya menemukan banyak file teks Jepang di Shift-JIS dan penyandian lainnya. Ini menyebabkan banyak masalah mojibake (karakter yang tidak dapat dibaca) untuk semua pengguna komputer. Unicode dimaksudkan untuk menyelesaikan masalah semacam ini dengan mendefinisikan satu set karakter untuk semua bahasa, dan serialisasi UTF-8 direkomendasikan untuk digunakan di Internet. Jadi mengapa tidak semua orang beralih dari penyandian khusus Jepang ke UTF-8? Apa masalah dengan atau kekurangan UTF-8 yang menahan orang?

EDIT: W3C daftar beberapa masalah yang diketahui dengan Unicode , mungkinkah ini menjadi alasan juga?

Nicolas Raoul
sumber
Sebenarnya semakin banyak situs populer di UTF-8, salah satu contohnya adalah ニ コ ニ コ 動画 dan は て な
Ken Li
8
Mengapa tidak semua orang beralih dari ISO-8851-1 ke UTF-8?
ysdx
1
Disebutkan di sini bahwa SHIFT-JIS -> konversi UTF-8 bukan tanpa kerugian, yang akan menjadi alasan utama untuk terus menggunakan SHIFT-JIS di tempat yang sudah digunakan. Saya menemukan fakta yang tampak mengejutkan itu mengejutkan, jadi saya berharap salah satu jawaban di sini bisa lebih detail atau setidaknya menyediakan sumber untuk klaim, tetapi tidak ada yang melakukannya.
Kyle Strand
@KyleStrand lihat support.microsoft.com/en-us/help/170559/…
Ludwig Schulze
@LudwigSchulze Terima kasih. Masih tidak banyak detail, tetapi setidaknya sumber resmi ...
Kyle Strand

Jawaban:

28

Dalam satu kata: warisan.

Shift-JIS dan penyandian lain digunakan sebelum Unicode tersedia / populer, karena itu adalah satu-satunya cara untuk menyandikan bahasa Jepang sama sekali. Perusahaan telah berinvestasi dalam infrastruktur yang hanya mendukung Shift-JIS. Bahkan jika infrastruktur itu sekarang mendukung Unicode, mereka masih terjebak dengan Shift-JIS karena berbagai alasan mulai dari itu-bekerja-jadi-jangan-sentuh-itu selama pengkodean-apa? untuk bermigrasi-semua-yang ada-dokumen-terlalu mahal .

Ada banyak perusahaan barat yang masih menggunakan ASCII atau latin-1 untuk alasan yang sama, hanya tidak ada yang tahu karena tidak pernah menyebabkan masalah.

menipu
sumber
8
Industri perangkat lunak Jepang ... lebih lambat daripada kotor dalam menggunakan perangkat lunak / standar baru.
Mark Hosang
2
@Mark Truer kata-kata tidak pernah diucapkan! (Saya bekerja di / dengan IT Jepang ... -_- ;;)
deceze
5
Benar, tetapi perusahaan-perusahaan Barat memiliki alasan bahwa perangkat lunak lama kami penuh dengan asumsi hard-coded bahwa 1 byte = 1 karakter, yang membuat transisi ke UTF-8 lebih sulit daripada orang Asia yang telah lama harus menulis kode MBCS-clean.
dan04
@MarkHosang Saya mengkonfirmasi bahwa pernyataan Anda 100% benar (Saya bekerja untuk perusahaan Jepang di Tokyo)
Hassan Tareq
9

Ini adalah alasan yang saya ingat diberikan karena tidak membuat UTF-8 atau representasi Unicode lainnya sebagai pengkodean karakter default untuk bahasa scripting Ruby, yang terutama dikembangkan di Jepang:

  • Alasan 1: Penyatuan Han . Set karakter (tidak yakin apakah "huruf" akan benar di sini) yang digunakan Cina, Korea, dan Jepang semuanya terkait, telah berevolusi dari sejarah umum, tidak yakin tentang detailnya. Konsorsium Unicode memutuskan untuk hanya menyia-nyiakan satu titik kode Unicode untuk menyandikan semua varian (Cina, Jepang, dan Korea) dari karakter bersejarah yang sama, bahkan jika penampilan mereka berbeda dalam ketiga bahasa. Alasan mereka adalah, penampilan harus ditentukan oleh font yang digunakan untuk menampilkan teks.

Rupanya, alasan ini dianggap sebagai konyol oleh pengguna Jepang seperti halnya untuk berpendapat kepada pembaca bahasa Inggris bahwa, karena alfabet Latin telah dikembangkan dari alfabet Yunani, cukuplah hanya memiliki satu titik kode tunggal untuk alfa Yunani " α "dan Latin" a ", dan biarkan tampilan diputuskan oleh font yang digunakan. (Sama untuk "β" = "b", "γ" = "g", dll.)

(Perhatikan bahwa saya tidak akan dapat memasukkan karakter yunani di sini di stackexchange jika itu yang terjadi.)

  • Alasan 2: Konversi karakter yang tidak efisien. Mengkonversi karakter dari Unicode ke legasi Penyandian dan punggung Jepang memerlukan tabel, yaitu tidak ada perhitungan sederhana dari nilai titik kode Unicode ke nilai titik kode warisan dan sebaliknya. Juga ada beberapa kehilangan informasi ketika mengkonversi karena tidak semua titik kode dalam satu pengkodean memiliki representasi unik di pengkodean lainnya.

Mungkin ada lebih banyak alasan yang diberikan sehingga saya tidak ingat lagi.

Ludwig Schulze
sumber
Tampaknya sejak 2.0 Ruby memang mengadopsi UTF-8 sebagai default. Tetapi unifikasi Han tampaknya menjadi kerutan yang sangat penting (dan masalah yang cukup kontroversial ) di dunia Unicode yang tampaknya tidak mendapatkan perhatian yang cukup, karena saya belum pernah mendengarnya sebelumnya.
Kyle Strand
Dan di sini ada artikel Wikipedia tentang masalah unifikasi Han: en.wikipedia.org/wiki/Han_unification Itu memang tampaknya menjadi masalah yang valid, jawaban yang bagus! Juga, kehilangan tanggal akan menjadi alasan yang bagus.
spbnick
8

Jawaban deceze memiliki elemen kebenaran yang sangat kuat untuk itu, tetapi ada alasan lain mengapa Shift-JIS dan lainnya masih digunakan: UTF-8 sangat tidak efisien untuk beberapa bahasa, sebagian besar di set CJK. Shift-JIS adalah, IIRC, pengkodean lebar dua byte sedangkan UTF-8 biasanya 3-byte dan kadang-kadang bahkan 4-byte dalam pengkodeannya dengan CJK dan lainnya.

HANYA PENDAPAT SAYA yang benar
sumber
7
Walaupun itu benar, selalu ada alternatif UTF-16, yang mungkin seefisien Shift-JIS. Saya juga berpendapat bahwa sakit kepala berurusan dengan pengkodean yang berbeda jauh melebihi sedikit peningkatan ukuran di zaman sekarang ini. Dengan kata lain, saya belum pernah mendengar argumen efisiensi untuk Shift-JIS oleh siapa pun yang masih menggunakannya. ;-)
menipu
5
Saya pernah mendengar masalah efisiensi yang digunakan sebagai alasan untuk sloth dan inersia.
HANYA SAYA PENDAPAT benar
1
UTF-16 membuat karakter dasar ASCII [di mana ada angka yang cukup besar misalnya HTML] dua kali lebih besar. Seperti yang saya pahami, ini pada akhirnya membuat UTF-16 lebih buruk daripada UTF-8 untuk halaman web Jepang.
Acak 832
2
@ HANYA PENDAPAT saya yang benar: Coba "Lihat Sumber" atau yang setara. Dengan asumsi semua teks sebenarnya dalam bahasa Jepang, kemungkinan ada banyak kata kunci dan sejenisnya yang berasal dari bahasa Inggris, dan diwakili dalam ASCII.
David Thornley
4
Bagi saya ini kedengarannya seperti alasan untuk melakukannya, kita temukan sesudahnya . Saya cukup yakin efisiensi hampir tidak ada hubungannya dengan status quo. Bagi saya itu hanya kelembaman dan warisan. Sebenarnya saya juga berpikir itu ada hubungannya dengan fakta bahwa sebagian besar kode yang diproduksi oleh programmer Jepang adalah untuk orang Jepang lainnya, sehingga mereka bahkan tidak merasa perlu untuk menggunakan sesuatu seperti Unicode.
Julien Guertault
2

Hitung ukuran string / penggunaan memori di antara alasan utama.

Dalam UTF-8, bahasa-bahasa asia timur sering membutuhkan 3 atau lebih byte untuk karakter mereka. Rata-rata mereka membutuhkan 50% lebih banyak memori daripada saat menggunakan UTF-16 - yang terakhir sudah kurang efisien daripada pengkodean asli.

Alasan utama lainnya adalah warisan, seperti yang ditunjukkan oleh tipu daya.

Denis de Bernardy
sumber
2

Warisan dan ukuran penyimpanan, seperti yang dikatakan orang lain, tetapi ada satu hal lagi: karakter Katakana.

Hanya diperlukan satu byte untuk mewakili karakter Katakana di Shift-JIS, sehingga teks Jepang termasuk Katakana membutuhkan waktu kurang dari 2 byte per karakter (1,5 untuk campuran 50/50), membuat Shift-JIS agak lebih efisien daripada UTF-16 (2 byte) / char), dan jauh lebih efisien daripada UTF-8 (3 byte / char).

Penyimpanan murah seharusnya membuat ini menjadi masalah yang jauh lebih kecil, tetapi ternyata tidak.

azheglov
sumber