2013-03-27 3 views
10

Я работаю над интернационализацией одной из моих программ для работы. Я пытаюсь использовать предвидение, чтобы избежать возможных проблем или переделать процесс по дороге.Какие языки поддерживает UTF-8?

Я вижу ссылки для UTF-8, UTF-16 и UTF-32. Мой вопрос состоит из двух частей:

  1. Какие языки поддерживает UTF-8 не?
  2. Какие преимущества имеют UTF-16 и UTF-32 для UTF-8?

Если UTF-8 работает на все, то мне любопытно, что преимущество UTF-16 и UTF-32 (например, специальные функции поиска в базе данных и т. Д.). Понимание должно помочь мне закончить проектирование моей программы (и соединений с базой данных). Благодаря!

ответ

12

Все три - это просто разные способы представить одно и то же, поэтому нет языков, поддерживаемых одним, а не другим.

Иногда UTF-16 используется системой, с которой вам нужно взаимодействовать - например, Windows API использует UTF-16 изначально.

Теоретически UTF-32 может представлять любой «символ» в одном 32-битовом целое, не требуя при этом использования более одного, тогда как UTF-8 и UTF-16 должны использовать более одного 8-битного или 16-битное целое число для этого. Но на практике, сочетая и не сочетая варианты некоторых кодовых точек, это не так.

Одно из преимуществ UTF-8 над другими заключается в том, что если у вас есть ошибка, при которой предполагается, что число 8-, 16- или 32-битных целых чисел будет таким же, как количество кодовых точек, оно становится очевиднее быстрее с UTF-8 - что-то сработает, как только у вас будет какой-либо код без ASCII, тогда как с UTF-16 ошибка может остаться незамеченной.

Чтобы ответить на ваш первый вопрос, вот список скриптов в настоящее время неподдерживаемых Юникодом: http://www.unicode.org/standard/unsupported.html

+0

Знаете ли вы, есть ли какие-либо преимущества базы данных в использовании одного типа над другим? –

+1

UTF-8 более компактен для преимущественно английского текста, поэтому с ним, вероятно, будет быстрее. Вы не должны находить какие-либо функции базы данных, доступные с одной кодировкой, а не другую. – RichieHindle

7

UTF8 является переменной величиной от 1 до 4 байт, UTF16 2 или 4 байта, UTF32 фиксируется 4 байта.

Именно поэтому UTF-8 имеет преимущество, когда ASCII являются наиболее распространенными символами, UTF-16 лучше, где ASCII не является преобладающим, UTF-32 будет охватывать все возможные символы в 4 байта.

+0

Большая часть наших продаж будет сформирована в США, так что это будет наш основной фокус ... например. Я хочу скорость. Итак, основываясь на этом, я предполагаю, что вы согласны с тем, что UTF-8 будет лучшим выбором для меня? –

+1

Вы правы, в этом случае я бы взял UTF-8. – duDE

+1

Таким образом, UTF-8 никогда не занимает больше места, чем UTF-16, а UTF-16 никогда не занимает больше места, чем UTF-32; кроме того, UTF-8 работает быстрее и обычно менее просторен, в основном строки в стиле ASCII, чем два других в целом, хотя остальные два в целом быстрее, чем UTF-8 при работе с строками, отличными от типа ASCII. Это верно? Какой компромисс между UTF-16 и UTF-32? – Panzercrisis

Смежные вопросы