问题标签 [icu]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - NumberFormat/DecimalFormat 将某些浮点值视为 long 而不是 double
NumberFormat/DecimalFormat 似乎没有将"#.0"
格式(其中# 是任何数字)的字符串解析为双精度。以下代码说明了这一点:
解析"2.0"
时,Formattable 的类型为 2 ( Formattable::Type::kLong
)。当解析"2.1"
Formattable 的类型是 1 ( Formattable:Type::kDouble
) - 因为它应该是两个字符串。
当您尝试将浮点数格式化为 UnicodeString 时也会出现问题(例如浮点数2.0
被格式化为"2"
)。
那么:如何在不将其解释为 ICU 中的整数的情况下解析/格式化任何双数?
android - android ndk 中的 unicode 支持
我有一个大型 C/C++ 库,我需要将其用作 Android NDK 项目的一部分。该库需要能够智能地处理 UTF8 字符串(例如,转换为小写/大写)。
该库具有条件编译,可以将其添加到 OS API 进行转换,但似乎没有任何适用于 UTF8 的 Android API。(mbstowcs等)
该线程说要使用 JNI 方法来完成它(!),这是一个相当重量级的解决方案。
我正在考虑构建ICU,但由于它使用 GNU Autotools,我不确定我是否可以使其与 NDK 工具链一起使用。:/
除了使用 JNI 之外,还有其他人遇到过这个问题并做过其他事情吗?
编辑:我试图让 ICU 编译在配置步骤失败:
c++ - 将 UnicodeString 设置为 C 字符串而不分配新的 UnicodeString
从 ICU 4.2.1 开始,将 UnicodeString 设置为 C 字符串的唯一直接方法是使用数据构造新的 UnicodeString,然后将所需的字符串设置为新字符串,从而分配、复制和释放数据比我想要的更多。
有没有办法将 UnicodeString 设置为(空终止/长度)C 字符串,而无需手动分配数据?
也许在更新版本的 ICU 中?(我没有检查过 4.2.1 以外的任何版本的文档,这是我发行版上的最新版本。)
看起来应该是一种setTo(const char*)
方法,因为您可以使用 C 字符串构造 UnicodeString。
android-ndk - Android NDK 中的 ICU 库
我正在尝试为依赖于 ICU 库(libicuuc.so 和 libicui18n.so)的 C 库创建 JNI 包装器。
我尝试在我的 NDK(标准版本和 CrystaX 版本,在 Mac OS X 机器上)中构建 ICU4C,并一直遇到如下链接问题:
我还尝试了在 android ndk 的 unicode support 中给出的建议,但没有运气。我被困在:
任何帮助,将不胜感激。
unicode - ICU的优点和缺点是什么?
我的团队的任务是在我们的软件中实现 Unicode,它有超过一百万行代码。我们支持带有 Oracle 或 SQL Server 数据库的 Windows、AIX 或 Solaris 上的 MFC 客户端和服务器。ICU 看起来是一个非常有用的工具。使用ICU有什么好处和坏处?ICU 是否像宣传的那样工作,没有重大错误?
c++ - 将 ICU UnicodeString 转换为平台相关的 char *(或 std::string)
在我的应用程序中,我使用 ICU UnicodeString 来存储我的字符串。由于我使用了一些与 ICU 不兼容的库,因此我需要将 UnicodeString 转换为其平台相关表示。
基本上我需要做的是逆向处理表单创建新的 UnicodeString 对象 - new UnicodeString(“系统语言环境中编码的字符串”)。
我发现了这个主题 - 所以我知道它可以通过使用 stringstream 来完成。
所以我的回答是,是否可以通过其他更简单的方式完成,而不使用 stringstream 进行转换?
php - 在默认的 Mac OS X Leopard 捆绑 PHP 配置上安装/启用 PHP Pecl Intl 扩展
如何在我的 PHP 环境中安装或启用 PHP Pecl Intl 扩展?
我有一个与 Mac OS X Snow Leopard 捆绑在一起的库存 PHP 配置。从源代码安装 libicu$pecl install intl
会导致以下错误:
非常感谢任何帮助!
c++ - Unicode 与 wchar_t 与 C++ 中 ICU 的不一致
虽然wchar_t
在支持不同编译器的情况下不一致,但假设wchar_t
至少在 Linux 上的 GNU/GCC 中的实现和大小相似是否安全?
尽管wchar_t
大小在位大小(32 位/64 位)方面具有系统架构依赖性,但 Linux 上的宽字符类型(GNU/GCC)实际上是依赖于编译器还是依赖于 libstdc++ 库?我的意思是更改或升级哪个我应该考虑的wchar_t
可能在大小和支持方面可能无法按预期工作
虽然IBM ICU 是另一种选择,但它可以与std::string
?
我应该完全驳回wchar_t
ICU吗?
注意:在类似 Unix 的操作系统上,例如带有 GNU/GCC libstdc++ 的 Linux,为编译器带来了核心 C++ 功能,因此偶尔会更新。
c++ - Unicode字符串的跨平台迭代(使用ICU计算字形)
我想迭代Unicode 字符串的每个字符,将每个代理对处理并将字符序列组合为一个单元(一个字素)。
例子
文本“नमस्ते”由以下代码点组成:U+0928, U+092E, U+0938, U+094D, U+0924, U+0947
, 其中,U+0938
和U+0947
组合标记。
所以我们在.NET中有它。我们也有 Win32 的CharNextW()
问题
我知道的两种方式都是微软特有的。有便携的方法吗?
- 我听说过 ICU,但我无法快速找到相关的东西(
UnicodeString(s).length()
仍然给出 6)。指向 ICU 中的相关功能/模块是一个可以接受的答案。 - C++ 没有 Unicode 的概念,因此用于处理这些问题的轻量级跨平台库将是一个可以接受的答案。
编辑:使用ICU的正确答案
@McDowell 给出了使用BreakIterator
ICU 的提示,我认为这可以被视为处理 Unicode 的事实上的跨平台标准。这是一个示例代码来演示其用法(因为示例 非常罕见):
c - 使用 ICU 获取当前语言环境
许多 ICU 函数将表示语言环境的 char * 作为参数。例如,如果我将其静态设置为“ko_KR”,那么它确实以对语言环境敏感的方式运行。
但是,我想根据时间格式的系统设置来确定当前的语言环境。据我了解,大多数系统都有显示数字、时间、金钱等的区域设置,这些都可能有所不同。任何关于如何做到这一点的想法将不胜感激!