Работа с китайскими иероглифами в манипуляции C-строкой - PullRequest
3 голосов
/ 18 марта 2012

Известно, что в Си строка представлена ​​массивом char с.

. И в большинстве 32-разрядных процессоров char занимает один байт или восемь битов.И строка состоит из массива из одного byte с.

Поскольку расширенные символы, такие как китайский и японский, занимают больше битов, чем 8 бит, я немного запутался в этом материалевокруг этого.

Например, я протестировал, что могу определять массив китайских символов так же, как и массив английских букв, используя синтаксис, такой как char array[100].Итак, мой вопрос:

Существует ли механизм, который пытается преодолеть разрыв между общими 8-битными символами и символами больше 8-битных, чтобы они рассматривались как одинаковые, так же, как у меняупомянутое выше.

Ответы [ 2 ]

3 голосов
/ 18 марта 2012

Да, используя многобайтовые кодировки символов.Это довольно широкий вопрос, но начнем со следующего:

  • wchar
  • Unicode
  • UTF-8 (который позволяет манипулировать строками с помощью функций на основе символов).
0 голосов
/ 18 марта 2012

Я бы предложил использовать строковое кодирование UTF8, так как это позволяет использовать обычные (байт <= 127) символы, как обычно, и, кроме того, вы сможете использовать два, три или четыре -байтовые символы путем обнаружения управляющего символа Unicode (байт> = 128). Вы также можете использовать libiconv для некоторых проблем. http://www.gnu.org/software/libiconv/

...