2008-09-02 2 views
4

Я нахожу, что получение поддержки Unicode в моих кросс-платформенных приложениях является настоящей болью в прикладе.Поддержка кроссплатформенного юникода

Мне нужны строки, которые могут быть переведены из кода C, в базу данных, в приложение Java и в модуль Perl. Каждый из них использует различные кодировки Unicode (UTF8, UTF16) или другую кодовую страницу. Самое большое, что мне нужно - это кросс-платформенный способ совершения конверсий.

Какие инструменты, библиотеки или методы используют люди, чтобы упростить управление этими вещами?

ответ

0

Как вы делаете звонки кросс-платформенных? Все это называется Java?

http://java.sun.com/docs/books/tutorial/i18n/text/string.html может быть полезно.

Я немного смущен тем, что вы пытаетесь сделать. Является ли база данных по существу интерфейсом между всем кодом? Тогда это должно быть легко - просто сделайте DB UTF-8, и каждый из клиентов должен будет сделать свои собственные преобразования.

Звучит как интересная проблема, не могли бы вы поделиться более подробной информацией?

2

Perl имеет Encode в качестве стандартной библиотеки. Его можно использовать для чтения/записи любой кодировки, которую вы хотите, так что это не будет проблемой.

+0

На самом деле Perl не так хорошо играет с Windows API и файловыми системами, которые ожидают UTF-16. Это возможно, но не так тривиально, как вы заставляете его звучать. – hippietrail 2011-03-31 08:52:17

0

Ну. Я думаю, iconv достаточно для ваших нужд. Iconv должен быть доступен по любой системе POSIX по умолчанию (включая GNU/Linux, BSD, Mac OS X ...). В Windows AFAIK требуется отдельная библиотека, но:

  1. Вы можете просто установить его/комплект с помощью программного обеспечения/статического компиляции. (libiconv for windows). (Я бы предположил, я бы рекомендовал связать его).
  2. Вы можете использовать некоторые собственные вызовы Windows в качестве специального случая.

Конечно, если вы используете Java, у него есть встроенный - но я вижу, что это может быть не то, что вы хотите (вызовы JNI дороги).

PS. Не можете ли вы установить perl для конкретной кодировки?

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