中文/日文机器是否支持char *?

时间:2008-12-17 12:31:40

标签: java string winapi dll internationalization

我正在尝试使用Java和JNI创建用于身份验证的DLL。

为了创建DLL,我创建了一个Win32应用程序,其字符集和运行时库信息分别是多字节字符串和多线程(/ MT)。

我在WinXP上使用有效和无效的用户凭据测试了DLL。两者都很好。

我需要知道同一个DLL是否也适用于中文/日文环境。

任何人都可以帮我解决这个问题吗?

提前致谢。

此致

Jegan K S

2 个答案:

答案 0 :(得分:1)

如果您只将字符串视为blob,它应该可以正常工作。当你开始访问它们“char-by-char”(即逐字节)时,如果你认为C char是一个完整的字符,那么事情可能会出错。同样,如果你假设你可以将中间的字符串拆分成两个子字符串,那么它可能会出错等等。

另外,问题是如何将Java字符串转换为这样的多字节字符串;有正确和错误的方法。

答案 1 :(得分:1)

马丁写的是真的:

  

它应该可以正常工作,如果你只是   将字符串视为blob。你几时开始   访问它们“char-by-char”(即   逐字节),事情可能会出错   如果你假设C char是完整的   柴拉特。同样,如果你认为你   可以在中间分割字符串   进入两个子串,它可能会去   错了,等等。

但它比那更糟糕。在日语或中文系统上运行只会使更可能您的代码将遇到多字节(非ASCII)文本。即使在美国英语系统上运行(最简单的情况),您的代码完全有可能遇到多字节(非ASCII)文本。不要假设默认情况下用户界面中使用的字符串是您可能遇到的限制。

另请注意,将项目转换为“Unicode”(正如Microsoft所称)将无济于事,因为Microsoft选择的Unicode编码是UTF-16,它有类似的问题(不太常见)。 (在UTF-16中,要注意的术语是“代理对”。)

文字处理很难。我们去买东西吧!