Какая наиболее распространенная кодировка каждого языка?
Я занимаюсь разработкой приложения для чтения простого текста. Иногда приложение не может автоматически определить кодировку файла, поэтому пользователю необходимо выбрать кодировку из списка кодировок. Если этот список содержит все поддерживаемые кодировки, он будет слишком длинным. Я хочу предоставить упрощенный список, содержит только наиболее распространенные кодировки каждого языка.
Это некоторые отношения, которые мне известны:
- Традиционный китайский: Big5
- Упрощенный китайский: GB18030
- Японский: Shift-JIS, EUC-JP
- Русский: KOI8-R
Если вы знаете наиболее распространенную кодировку на любом другом языке, пожалуйста, сообщите мне.
3 ответа
Кстати, вот локали Windows XP, сгруппированные по кодировке символов по умолчанию:
- Big5: ж_ХК, ж_МО, ж_ТВ
- GBK (≈GB2312): zh_CN, zh_SG
- Windows-31J (≈Shift_JIS): ja_JP
- Windows-874 (≈TIS-620, ISO-8859-11): th_TH
- windows-949 (≈EUC-KR): ko_KR
- Windows-1250: bs_BA, cs_CZ, hr_BA, hr_HR, hu_HU, pl_PL, ro_RO, sk_SK, sl_SI, sq_AL, sr_BA, sr_SP
- Windows-1251: az_AZ, be_BY, bg_BG, kk_KZ, ky_KG, mk_MK, mn_MN, ru_RU, sr_BA, sr_SP, tt_RU, uk_UA, uz_UZ
- Windows-1252 (≈ISO-8859-1): af_ZA, arn_CL, ca_ES, cy_GB, da_DK, de_AT, de_CH, de_DE, de_LI, de_LU, en_AU, en_BZ, en_CA, en_CB, en_GB, en_IE, en_JM, en_NZ en_TT, en_US, en_ZA, en_ZW, es_AR, es_BO, es_CL, es_CO, es_CR, es_DO, es_EC, es_ES, es_GT, es_HN, es_MX, es_NI, es_PA, es_PE, es_PR, es_PY, es_ES, ES_SU, e_VF fil_PH, fo_FO, fr_BE, fr_CA, fr_CH, fr_FR, fr_LU, fr_MC, fy_NL, ga_IE, gl_ES, id_ID, is_IS, it_CH, it_IT, iu_CA, iv_IV, lb_LU, moh_N_NO, ms_N_NB, ms_N_NB, ms_ ns_ZA, pt_BR, pt_PT, qu_BO, qu_EC, qu_PE, rm_CH, se_FI, se_NO, se_SE, sv_FI, sv_SE, sw_KE, tn_ZA, xh_ZA, zu_ZA
- windows-1253: el_GR
- windows-1254 (≈ISO-8859-9): az_AZ, tr_TR, uz_UZ
- windows-1255: he_IL
- Windows-1256: ar_AE, ar_BH, ar_DZ, ar_EG, ar_IQ, ar_JO, ar_KW, ar_LB, ar_LY, ar_MA, ar_OM, ar_QA, ar_SA, ar_SY, ar_TN, ar_YE, fa_IR, ps_AF, ur_PK
- Windows-1257: et_EE, lt_LT, lv_LV
- windows-1258: vi_VN
и наиболее распространенные кодировки в Интернете:
- UTF-8 (89,2%)
- ISO-8859-1 (5,0%)
- Windows-1251 (1,6%)
- Сдвиг JIS (0,9%)
- Windows-1252 (0,8%)
- GB2312 (0,7%)
- EUC-KR (0,4%)
- EUC-JP (0,3%)
- GBK (0,3%)
- ISO-8859-2 (0,2%)
- Windows-1250 (0,2%)
- ISO-8859-15 (0,1%)
- Windows-1256 (0,1%)
- ISO-8859-9 (0,1%)
- Big5 (0,1%)
- Windows-1254 (0,1%)
- Windows-874 (0,1%)
Черновик HTML5 содержит таблицу кодировок по умолчанию для языков, отражающую то, что считается распространенным. Тем не менее, обратите внимание, что он должен основываться на локали пользователя, то есть на языке браузера или операционной системы, а не на языке документа - очевидно, потому что последний обычно неизвестен, по крайней мере, до того, как вы действительно прочитаете документ, основанный на некотором предположении о кодировке.
Я думаю, что вы могли бы на практике скопировать список кодировок в популярном веб-браузере. Если он хорошо работает там, он, вероятно, работает достаточно хорошо в вашем приложении. Браузеры делают некоторые умные вещи со списком и его порядком, но на практике, я думаю, было бы достаточно иметь короткий список, такой как utf-8, utf-16, windows-1252 и, возможно, несколько других, за которыми следует опция получить полный список. Обратите внимание, что хотя utf-16 практически не используется и бесполезен для веб-страниц, он является обычным для обычных текстовых файлов. Важно правильно назвать кодировки, желательно с общим английским (или другим языком) именем вместе с именем "charset" IANA в скобках - так же, как это делают браузеры.
Я бы порекомендовал структуру меню, аналогичную используемой в браузерах. Например, Firefox: Вид -> Кодировка символов -> Дополнительная кодировка -> Восточная Азия -> Китайский / Японский / Корейский. (ладно, проще, если ты просто посмотришь). И Просмотр -> Кодировка -> Еще в IE.
Может показаться слишком глубоким и неуклюжим, но это очень знакомо. И не сбрасывает полезные кодировки (почему KOI8-R для русского, например? А что будет, если я использую Windows 1251 и не попал в список?)