是否有一个可以在 Win32 和 MacOSX 系统上使用的跨平台 unicode 字符串类?

发布于 2024-10-18 13:23:38 字数 123 浏览 5 评论 0原文

我还需要区域设置感知大小写转换。 .NET 在这方面做得很好。难道我们C++程序员要等100年才能得到这样的东西吗?我知道 ICU 库,但它有 20MB,我什至无法将我的代码与它链接起来......总之,我想结束这场噩梦......

Also I need locale aware case conversion. .NET do this very well. Do us C++ programmers have to wait 100 years for such thing ? I am aware of the ICU library but it's 20MB and I can't even get to link my code with it... All in all I want to end this nightmare..

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

天邊彩虹 2024-10-25 13:23:38

您可能想要使用操作系统提供的 API。 Windows 具有 NLS API,用于处理特定于区域设置的字符串比较和大小写转换。

独立的 Unicode 库是 ICU 和 IConv。两者都需要一些时间来学习。数据文件也相当大——预计携带> 10M数据文件,支持大多数语言。

顺便说一句,您的链接错误通常是由于您指定了静态库但导入的函数具有指定 DLL 的 dllimport 属性而引起的。默认情况下,ICU 头文件在其 API 上声明 dllimport。您需要在包含 ICU 标头之前定义一个宏。

You might want to use the API provided by the operating system. Windows has NLS API that deals with locale specific string comparison and case conversion.

Standalone Unicode Libraries are ICU and IConv. Both require some time to learn. The data file is also quite large - expect to carry > 10M data files to support most languages.

BTW, your link error is typically caused by the fact that you specified a static library but the imported function has dllimport attribute which specifies a DLL. By default ICU header files declare dllimport on its APIs. You need to define a macro before including the ICU header.

离去的眼神 2024-10-25 13:23:38
  • libiconv 是一个跨平台 unicode 库,是 glibc,也是 POSIX.1-2001 标准的一部分。它也可在 Mac 和 Windows 上使用。
  • UTF-8 是一种向后兼容 ASCII 的字符编码。
  • C 字符串 是可以保存 ASCII 和 UTF-8 的以 null 结尾的字节数组。

这就是你所需要的。编码/解码为 UTF-16 和 UCS-32 或您在需要与旧版操作系统交互时所拥有的内容。

  • libiconv is a cross platform unicode library, a part of glibc, and part of the POSIX.1-2001 standard. It's also available on Mac and Windows.
  • UTF-8 is a character encoding that is backwards compatible with ASCII.
  • C strings are null terminated byte arrays that can hold ASCII and UTF-8.

That's all you need. Encode/decode to UTF-16 and UCS-32 or what have you when required to interface with legacy operating systems.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文