Какие языки поддерживает UTF-8?

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

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

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

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

Ответ 1

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

Иногда 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 ошибка может остаться незамеченной.

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

Ответ 2

UTF8 - это переменная от 1 до 4 байтов, UTF16 2 или 4 байта, UTF32 - 4 байта.

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