Как изменить кодировку строк как UTF 8 в C - PullRequest
0 голосов
/ 11 апреля 2011

Как я могу изменить кодировку строки в UTF-8?Я делаю некоторые вызовы execv для программы на python, но python возвращает строки с вырезанными символами.Я не знаю, является ли это проблемой Python или проблемой c, но я подумал, что если я смогу изменить кодировку строк в c, а затем передать ее в python, это должно сработать.Так как я могу это сделать?

Спасибо.

Ответы [ 2 ]

3 голосов
/ 11 апреля 2011

C как язык не облегчает кодирование строк. Строка C - это просто нулевая последовательность символов (8-битные целые числа со знаком в большинстве систем).

Широкая строка (с символами типа wchar_t, обычно 16-разрядными целыми числами) также может использоваться для хранения больших значений символов; однако, опять же, стандартные функции библиотеки C и типы данных никоим образом не осведомлены о какой-либо концепции строкового кодирования.

Ответ на ваш вопрос - убедиться, что строки, передаваемые вами в Python, кодируются как UTF-8.

Однако, чтобы помочь вам достичь этого в любом подробном качестве, вам нужно будет предоставить больше информации о том, как в настоящее время формируются ваши строки, что они содержат, и как вы строите свой список аргументов для exec.

3 голосов
/ 11 апреля 2011

Нет такой вещи, как кодировка символов в C.

A char* может содержать любые данные, как вы интерпретируете символы, зависит от вас.Например, printf, как правило, выводит символы в том виде, в каком они есть, в стандартный вывод, и если ваша консоль интерпретирует эти символы как UFT8, они будут отображаться так.на стороне C вы можете взглянуть на ICU .

Если вы хотите конвертировать кодировки на стороне Python, посмотрите на http://docs.python.org/howto/unicode.html.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...