问题标签 [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.

0 投票
1 回答
1141 浏览

c - 静态链接 ICU4C 使 uregex 函数失败

我将使用 ICU4C unicode 库,版本为 4.2.1(打包在 Ubuntu 10.04 中的版本)。我做了一个简单的测试代码;只是打开一个正则表达式对象。

我使用动态链接的 icu 库编译并运行,如下所示:

结果状态码为“0”。像魅力一样工作。

现在我决定像下面一样静态链接icu库,然后运行

结果状态码为“1”。uregex_open 函数失败,状态码为“U_ILLEGAL_ARGUMENT_ERROR”。

我是否错过了静态链接 ICU4C 的内容?

0 投票
2 回答
81 浏览

php - 什么是整数向量以及如何读取/使用它们?

如何应用在 ICU 数据文件中格式化的整数/整数向量...

例如;

我可以将这些格式化为人类可读的“起始”日期,例如 PHP 中的 1792-01-01 吗?

谢谢

// 罗兰

编辑:我在 PHP 中有整数;

0 投票
1 回答
838 浏览

linux - icu-config 获取静态库标志

如何获取 icu 的静态库标志。使用 icu-config 。

如果我跑icu-config --ldflags

它与动态库链接。我想链接到静态库。我怎样才能得到静态标志使用icu-config

0 投票
1 回答
2191 浏览

php - 在 PHP 5.3.6 中更新 ICU 版本

我花了一些时间来安装 MediaWiki。作为安装基础,我使用带有 Windows 2003 和 iis 的虚拟机。在安装 php 并配置了一些东西之后,我现在卡在配置 intl 和 icu 上。

过了一会儿,我意识到,intl 是在 php 的 win 安装程序中提供的标准扩展。不幸的是,他们使用 icu 3.8 并且 MediaWiki 建议使用更新的版本。

因为我是 MediaWiki 的新手,所以我尝试安装所有建议。

我在网络下载链接中找到了新的 icu*.dll,但没有找到 intl.dll。在放置“旧” icu*38.dll 文件的目录中复制 7 个文件 icu*48.dll 将不起作用。我理解为什么会这样,因为我想,dll 需要文件名。

所以问题是,我在哪里可以使用更新版本的 icu 获得更新版本的 intl.dll,或者我可以使用 icu 4.6 编译 intl.dll。顺便说一句,我不是一个编译破解。

非常感谢弗兰克

0 投票
3 回答
2690 浏览

unicode - Unicode 拉丁字母“WITH STROKE”的音译

将规则"NFD; [:Nonspacing Mark:] Remove; NFC"输入ICU Transliterator demo,字符Ø( \u00d8== LATIN CAPITAL LETTER O WITH STROKE) 保持原样(即 STROKE 未被剥离)。

在非标记空间列表(Category Mn) 中,我找不到任何COMBINING DIAGONAL STROKE类似于COMBINING SHORT STROKE OVERLAY( \u0335) 或COMBINING LONG STROKE OVERLAY( \u0336) 的名称。

但是,我确实找到了COMBINING SHORT SOLIDUS OVERLAY( \u0337) 和COMBINING LONG SOLIDUS OVERLAY( \u0338)。o它们看起来很相似,但在我的浏览器中与和结合使用时会呈现出更粗的线条O

我访问的Unicode 数据\u00d8不提供该字符的分解。

同时,ICU Collat​​or Demo将使用 Primary (Level = 1 = Base Letter) Collat​​or 将 、 、 、 和 中的每一个整理到ø相同oØ代码点Oo\u0337O\u0338

这是否意味着 Demo 中使用的 Collat​​or 的语言环境已设置为以 Unicode 规范没有提及的方式识别基本字符?

如果是这样,如果我想从LATIN [CAPITAL, SMALL] LETTER *音译字符中删除笔划,是否需要自定义基于规则的音译器?

0 投票
2 回答
907 浏览

c++ - 在 Win32 上使用 icu u32_regex 内存泄漏/缓存来提升

当使用启用了可选 ICU 支持的 boost regex 类时(有关详细信息,请参阅boost 文档),我似乎遇到了内存泄漏,或者说发生了某种内存缓存,我似乎无法重置/清理。

有没有其他人看到这个并且可能知道清除缓存的方法,以便 boost 单元测试框架不会报告内存泄漏?

我的问题的详细信息是:-

虽然我确实尝试过使用 icu 4.2.1 的 boost 1.42,但我碰巧在我的系统上构建了相同的结果,所以不要认为这是一个可以通过更改为 boost 1.47 icu 4.8.1 来解决的问题,这是最新版本。

编译以下代码(Test.cpp):-

可以通过以下方式从命令行编译:-

为您的机器提供适当的头文件/库路径

如果没有路径,则将相应的 boost dll 复制到包含 test.exe 的目录(boost_regex-vc100-mt-gd-1_45.dll 和 boost_unit_test_framework-vc100-mt-gd-1_45.dll)

运行上述步骤中的 test.exe 时,我得到:-

我猜 icu 实际上是这里的罪魁祸首,因为它的名字在第二个街区的开头。

仅进行第一次测试(即仅创建标准正则表达式而不是 u32_regex)未检测到内存泄漏。

在测试中添加多个 u32_regex 不会导致更多内存泄漏。

我尝试按照icu 文档使用 u_cleanup() 调用来清理 icu 缓存,请参阅 ICU 初始化和终止部分。

但是我对 icu 库不是很熟悉(实际上我只是在使用它,因为我们想要支持 unicode 的正则表达式支持),并且看不到如何在 ICU 加载 ICU 时调用 u_cleanup() 来实际清理数据提升正则表达式 dll。

只是重申这个问题似乎是: -

在使用可选 icu 支持编译的 dll 中提升正则表达式(我很确定这使用到 icu 的静态链接,但这里可能是错误的)

如果我在测试程序中链接到 icuuc.lib 以便我可以调用 u_cleanup() 这似乎不会影响通过 boost regex 库加载的 ICU 实例所持有的内存(如果这样做会很奇怪)

我在 regex 库中找不到任何调用,这些调用允许我要求它清理我们真正想要调用的 ICU 数据。

0 投票
1 回答
2101 浏览

c++ - 不断收到错误 LNK2019:未解析的外部符号

我使用的IDE是Visual Studio 2010 Professional,我使用的库是ICU 4C 4.8.1 for Win32 for MSVC10。

我已经按照 Debug 和 Release 的手册重新构建了所有的源代码,并且所有的测试都成功通过了。

然后我按照我使用 Boost 的方式进行操作。

我在C/C++ > Additional Include Directories in Proprieties中包含了\include,这似乎很好。

我还在 Linker > Additional Library Directories 中包含了\ lib

但是,我不断得到error LNK2019: unresolved external symbol.

源代码:

错误

0 投票
1 回答
666 浏览

c++ - ICU 库的拼写规则(RuleBasedNumberFormat)在哪里?

我使用 ICU 将数字拼写成字符串,例如:
“一百三十四”// 134 使用 en_US 拼写
我的语言环境(vi_VN)的开箱即用拼写规则似乎是错误的
15 变成“mườinăm”而不是“mười” lăm”还有更多错误
,所以我需要编辑规则但不知道在哪里更改

0 投票
3 回答
4942 浏览

string-formatting - 使用 ICU 将数字格式化为货币以在 Google 柱形图中使用

我正在使用 Google Charts 来制作一个漂亮的柱形图,这实际上是一项非常简单的任务,但我陷入了以下问题:我必须以这种方式格式化垂直轴上显示的值 ->“R$ 1.000,00 ”(对于巴西货币),然后我在googles 文档页面上找到了关于柱状图的信息,它可以提供 ICU 表达式以按照我想要的方式格式化数字,包括货币格式。

这是我能得到的最接近的,但这个表达式给了我:

所以我的两个问题是:

1) 无法显示千位分隔符 2) 无法用“.”替换千位分隔符 和小数分隔符由“,”

在网上搜索了很多关于 ICU 本身的东西,描述了如何通过调用 ICU C++ lib 中的一些方法来实现它,但是在处理 w/google 图表时它显然不可用。

0 投票
2 回答
1180 浏览

c++ - ICU 字节顺序标记 (BOM)

我正在使用 ICU 的 ustdio 函数将 UnicodeString 对象写入一系列编码的文件,但它似乎没有预先添加 BOM。

我的代码:

当我将 LE 更改为 BE 时,文件编码确实会交换,但是没有 BOM,十六进制编辑器中的输出文件是:

注意:如果我将代码页设置为“UTF-16”,则会有一个 BOM,但是一旦我手动指定字节序,它就会消失。

或者,有没有办法可以将 UnicodeString 写入带有 BOM 的文件?