Какую кодировку символов следует использовать для веб-страницы, содержащей преимущественно арабский текст? Утф-8 в порядке?
Какую кодировку символов следует использовать для веб-страницы, содержащей преимущественно арабский текст?
Является ли utf-8 в порядке?
Ответы
Ответ 1
UTF-8 может хранить полный диапазон Unicode, поэтому он отлично подходит для использования на арабском языке.
Однако, если вам интересно, какая кодировка будет наиболее эффективной:
Все арабские символы могут быть закодированы с использованием одного блока кода UTF-16 (2 байта), но они могут принимать либо 2 или 3 блока кода UTF-8 (по 1 байт каждый), поэтому, если вы просто кодировали арабский язык, UTF -16 будет более экономичным вариантом.
Однако вы не просто кодируете арабский язык - вы кодируете значительное количество символов, которые могут быть сохранены в одном байте в UTF-8, но взять два байта в UTF-16; все символы кодировки html <
, &
, >
, =
и все имена элементов html.
Это компромисс, и, если вы не имеете дело с огромными документами, это не имеет значения.
Ответ 2
Я разрабатываю в основном арабские веб-сайты, и это два кодирования, которые я использую:
1. Окна-1256
Это наиболее распространенные арабские веб-сайты кодирования. Он работает в большинстве случаев (90%) для арабских пользователей.
Вот один из крупнейших форумов по веб-разработке в арабских странах: http://traidnt.net/vb/. Вы можете видеть, что они используют эту кодировку.
Проблема с этой кодировкой заключается в том, что если вы разрабатываете сайт для международного использования, эта кодировка не будет работать с каждым пользователем, и они будут видеть тарабарщину вместо содержимого.
2. UTF-8
Эта кодировка решает предыдущую проблему, а также работает в URL-адресах. Я имею в виду, если вы хотите иметь арабские слова в своем URL-адресе, вам нужно, чтобы они были в utf-8, или это не сработает.
Недостатком этой кодировки является то, что если вы собираетесь сохранять арабский контент в базу данных (например, MySql) с использованием этой кодировки (поэтому база данных также будет закодирована с помощью utf-8), ее размер будет вдвое больше было бы, если бы оно было закодировано с помощью windows-1256 (поэтому база данных будет закодирована с латинским-1).
Я предлагаю идти с utf-8, если вы можете позволить увеличить размер.
Ответ 3
UTF-8 в порядке, да. Он может кодировать любую кодовую точку в стандарте Unicode.
Отредактировано для добавления
Чтобы сделать ответ более полным, ваш реалистичный выбор:
Каждый из них имеет компромиссы и преимущества.
UTF-8
Как Joe Gauterin указывает, что UTF-8 очень эффективен для европейских текстов, но может стать все более неэффективным "дальше" от латинского алфавита, который вы получаете. Если ваш текст полностью арабский, он будет больше, чем эквивалентный текст в UTF-16. Это редко бывает проблемой, однако, на практике в эти дни дешевой и обильной ОЗУ, если у вас нет большого количества текста для решения. Большая проблема заключается в том, что переменная длина кодировки делает некоторые строковые операции трудными и медленными. Например, вы не можете легко получить пятый арабский символ в строке, потому что некоторые символы могут быть 1 байт длиной (знаки препинания, скажем), а другие - два или три. Это делает фактическую обработку строк медленной и подверженной ошибкам.
С другой стороны, UTF-8, скорее всего, ваш лучший выбор, если вы делаете много смешанного европейского/арабского текста. Чем больше европейский текст в ваших документах, тем лучше будет выбор UTF-8.
UTF-16
UTF-16 даст вам лучшую эффективность пространства, чем UTF-8, если вы используете преимущественно арабский текст. Однако я не знаю о арабских кодовых точках, поэтому я не знаю, если вы рискуете иметь кодировки переменной длины. (Мое предположение заключается в том, что это не проблема.) Если вы действительно имеете кодировки переменной длины, все проблемы обработки строк UTF-8 применимы и здесь. Если нет, никаких проблем.
С другой стороны, если у вас смешанные европейские и арабские тексты, UTF-16 будет менее экономичным по площади. Кроме того, если вы обнаружите, что расширяете свои текстовые формы в других текстах, например, на китайском, вы обязательно возвращаетесь к формам переменной длины и связанным с ними проблемам.
UTF-32
UTF-32 в основном удвоит ваши требования к пространству. С другой стороны, он имеет постоянный размер для всех известных (и, вероятно, неизвестных;) script форм. Для обработки необработанных строк это самый быстрый и лучший вариант без проблем, вызвавших вас кодировкой переменной длины. (Это предполагает, что у вас есть строковая библиотека, которая знает о 32-битных символах, естественно.)
Рекомендация
Моя собственная рекомендация заключается в том, что вы используете UTF-8 в качестве внешнего формата (потому что все его поддерживают) для хранения, передачи и т.д., если вы действительно не видите размер по размеру с UTF-16, Поэтому в любое время, когда вы читаете строку из внешнего мира, это будет UTF-8, и в любое время, когда вы ставите ее во внешний мир, это тоже будет UTF-8. Однако в вашем программном обеспечении, если у вас нет привычки манипулировать массивными строками (в этом случае я бы рекомендовал разные структуры данных)! Я бы рекомендовал вместо этого использовать UTF-16 или UTF-32 (в зависимости от того, проблемы с кодировкой переменной длины в ваших данных UTF-16) для скорости и простоты кода.
Ответ 4
UTF-8 - самый простой способ, так как он будет работать практически со всеми:
UTF-8 может кодировать любой Unicode персонаж. Файлы в разных языки могут отображаться правильно без необходимости выбирать правильные кодовой страницы или шрифта. Например Китайский и арабский могут быть в одном и том же текст без специальных кодов, вставленных в переключите кодировку. (через wikipedia)
Конечно, имейте в виду, что:
UTF-8 часто занимает больше места, чем кодирование, сделанное для одного или нескольких языки. Латинские буквы с диакритикой и символы из другого алфавита сценарии обычно принимают один байт за персонажа в соответствующем многобайтовое кодирование, но UTF-8. Восточноазиатские сценарии вообще имеют два байта на символ в своем многобайтовые кодировки, но три байтов на символ в UTF-8.
... но в большинстве случаев это не большие проблемы. Это стало бы одним, если вы начнете обрабатывать огромные документы.
Ответ 5
UTF-8 часто занимает больше места, чем кодировка, сделанная для одного или нескольких языков. Латинские буквы с диакритикой и символы из других алфавитных сценариев обычно принимают один байт за символ в соответствующей многобайтовой кодировке, но принимают два в UTF-8. Восточноазиатские скрипты обычно имеют два байта на символ в своих многобайтовых кодировках, но в UTF-8 принимают три байта за символ.
Ответ 6
شركة تركيب اثاث ايكيا بالرياض | شركة تنظيف خزانات بالرياض | شركة صيانة مسابح بالرياض | شركة تخزين اثاث بالرياض | شركة بيع وشراء اثاث بالرياض | شركة مكافحة حمام بالرياض | شركة رش مبيدات بالرياض | شركة كشف تسربات المياه بالرياض | شركة صيانة مكيفات بالرياض | شركة جلي بلاط بالرياض | شركة تنظيف منازل بالرياض | شركة نقل اثاث بالرياض | شركة تنظيف سجاد بالرياض | شركة مكافحة حشرات بالرياض
شركة مكافحة حشرات بالاحساء | افضل شركة تنظيف بالاحساء شركة تنظيف سجاد بالاحساء