【问题标题】:cross platform unicode support跨平台 Unicode 支持
【发布时间】:2010-09-07 12:37:28
【问题描述】:

我发现在我的跨平台应用程序中获得 Unicode 支持真的很痛苦。

我需要可以从 C 代码到数据库、Java 应用程序和 Perl 模块的字符串。其中每一个都使用不同的 Unicode 编码(UTF8、UTF16)或其他一些代码页。我最需要的是一种跨平台的转换方式。

人们使用什么样的工具、库或技术来简化处理这些事情?

【问题讨论】:

    标签: java c perl unicode cross-platform


    【解决方案1】:

    好吧,我想 iconv 足以满足您的需求。默认情况下,Iconv 应该可以在任何 POSIX 系统上使用(包括 (GNU/)Linux、*BSD、Mac OS X...)。在 Windows AFAIK 上,它需要单独的库,但是:

    1. 你可以安装它/捆绑你的软件/静态编译它。 (libiconv for windows)。 (我想我会建议捆绑它)。
    2. 您可以使用一些本机 Windows 调用作为特殊情况。

    当然,如果您使用的是 Java,它是内置的 - 但我发现它可能不是您想要的(JNI 调用很昂贵)。

    PS。你不能把 perl 设置成特定的编码吗?

    【讨论】:

      【解决方案2】:

      Perl 将Encode 作为标准库。它可以用来读/写你想要的任何编码,所以这不会是一个问题。

      【讨论】:

      • 实际上 Perl 不能很好地与 Windows API 和需要 UTF-16 的文件系统配合使用。这是可能的,但不像你说的那么简单。
      【解决方案3】:

      您如何进行跨平台调用?都是从Java调用的吗?

      http://java.sun.com/docs/books/tutorial/i18n/text/string.html 可能有用。

      我对你到底想要做什么有点困惑。数据库本质上是所有代码之间的接口吗?那么它应该很容易 - 只需制作 DB UTF-8,每个客户端都需要进行自己的转换。

      听起来是个有趣的问题,你能分享更多细节吗?

      【讨论】:

        【解决方案4】:

        【讨论】: