Utf8 Linux имена файлов и C - PullRequest
       31

Utf8 Linux имена файлов и C

0 голосов
/ 29 сентября 2011

Я работаю в независимом от ОС файловом менеджере, используя SDL_ttf для рисования моего текста.В Windows все работает хорошо, но в Linux я должен использовать функции SDL_ttf UTF8, потому что имена файлов могут быть в кодировке UTF8.

Это работает хорошо, но если у меня есть собственная строка C (а не файл)имя), например, «Ää», оно будет отображаться неправильно.Есть ли способ сказать gcc кодировать мои строки как UTF8?

Ответы [ 3 ]

4 голосов
/ 29 сентября 2011

Вам не нужно ничего особенного из вашего компилятора C для строковых литералов UTF-8. Надлежащая поддержка этого в API, которые вы используете, это другой вопрос, но это, кажется, покрыто.

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

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

1 голос
/ 29 сентября 2011

C должен иметь какой-то строковый литерал Unicode.Начните поиск в Google для «программирования на Unicode C», два урока, которые кажутся хорошими, это один на developerworks и один на cprogramming.com .

Общееподход для вашего конкретного случая будет использовать широкий строковый литерал L"Ää", а затем преобразовать его в UTF-8 с помощью wcstrtombs().

1 голос
/ 29 сентября 2011

gcc должен интерпретировать ваш исходный код и строковые литералы как UTF-8 по умолчанию.Попробуйте -fexec-charset

См. Также: http://gcc.gnu.org/onlinedocs/gcc-4.0.1/cpp/Implementation_002ddefined-behavior.html#Implementation_002ddefined-behavior

...