问题标签 [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++ - 将用户定义的规则添加到现有语言
任何人都可以解释正确的方法是以一种语言加载现有规则并向它们添加一些新规则。我执行以下操作,但未设置规则。
c - 更新某些扫描仪代码以使用 ICU 时的问题
我正在开发一个基本的手工编码词汇扫描器,并希望支持 UTF-8 输入(它不再是 1970 年了!)。stdin
一次从一个文件中读取输入字符,然后将其推入缓冲区,直到看到空格等。我考虑为此编写自己的包装器fgetc()
,而不是返回char[]
构成 UTF-8 字符并与结果作为一个字符串......这很容易,但会变成一个滑坡。我不想浪费时间重新发明轮子,而是使用现有的、经过测试的库,如ICU。所以现在我有一个非 UTF-8 支持代码,它适用于fgetc()
, isspace()
,strcmp()
等,我正在尝试更新以使用 ICU。这是我第一次尝试 ICU,并且一直在阅读文档并尝试使用 Google 代码搜索查找使用示例,但仍然存在一些混淆点,我希望有人能够澄清。
该u_fgetc()
函数返回UChar
,并u_fgetcx()
返回UChar32
......文档建议使用u_fgetcx()
来读取代码点,所以这就是我开始的内容。我保持与上面相同的方法,但我将UChar32
s 推入缓冲区而不是char
s。
将字符与已知值进行比较的正确方法是什么?最初我能够
if (c == '+')
检查是否从输入中获取了加号。GCC 不会抱怨什么时候c
是 aUChar32
(然后是和之间的比较UChar32
)char
,但这真的合适吗?我可以用来
strcmp()
将缓冲的字符与已知值进行比较,例如if ((strcmp(buf, "else") == 0)
. ICU提供u_strcmp()
了,我想我可能需要使用U_STRING_DECL
andU_STRING_INIT
宏来指定已知的文字,但我不确定。文档显示它们会导致UChar[]
,尽管我认为我需要UChar32[]
......而且我不确定如何正确使用它们。欢迎在这里提供任何指导。在阅读了一系列数字字符后,我一直在转换它们,
strtol()
以便可以使用它们。自从我现在转换以来,ICU 是否提供了类似的功能UChar32[]
?
php - ResourceBundle 返回 NULL 而不会引发任何错误
对于国际化数据,最好使用\ResourceBundle
PHP 的“intl”扩展中的类。
我运行了扩展(PHP 5.3.4;Windows)并使用ICU Data Library Customizer * 创建了一个 .dat 文件,但我没有从资源包类中得到预期的结果。
现在我这样做
问题是$resource
返回 NULL 而不会引发任何错误。这是怎么回事?
*(只检查了最后两个数据部分 - 始终包含基本数据 - 我将其导出为 ICU4C)
sqlite - 是否有 ICU 标记器错误的 Sqlite 和 FTS 表?
我的 sqlite 数据库中的 FTS 表有一个奇怪的问题。我正在创建一个这样的表:
然后插入两行,一行包含名称和内容,另一行仅包含名称。
当我尝试更新或删除仅填充名称列的行时,我收到错误“模块'sqlite3.dll'中地址7244CF96的访问冲突。读取地址00000000。”。其他行一切正常,我可以照常更新或删除。我使用什么语言环境并不重要,我尝试过 en_US 和许多其他语言。而且fts3和fts4没有区别。这似乎是 ICU 错误,因为 sqlite 的内置标记器没有问题。是ICU还是sqlite错误,还是我做错了什么?我已经在 SQLite Expert 和我的项目中尝试过这个,其中包含所有必需的编译选项和所有库。
堆栈帧中的最新:
fts3DeleteTerms 正在获取空指针而不是字符串并将其向下传递。我现在无法逐步调试它(我正在使用合并,VS 2010 无法调试超过 65535 行代码)。
c++ - 帮助编辑代码以修复“参数列表太长”错误
我目前正在对基于 ICU 字典的中断迭代器的新增功能进行一些测试。我的代码允许我测试文本文档的断词,但是当文本文档太大时,它会给出错误:bash: ./a.out: Argument list too long
我不确定如何编辑代码以在参数列表太长时分解参数列表,以便可以通过代码运行任何大小的文件。原代码作者很忙,有人愿意帮忙吗?
我尝试删除正在检查的内容的打印以查看是否有帮助,但我仍然在大文件上遇到错误(不需要打印正在检查的内容 - 我只需要结果)。
如果可以修改代码以逐行读取源文本文件并将结果逐行导出到另一个文本文件(完成后以所有行结束),那将是完美的。
代码如下:
非常感谢!-内森
perl - Perl 脚本逐行读取文件并在每一行上运行命令
我在这里找到了这个 perl 脚本,它似乎适用于我的目的。它打开一个 Unicode 文本文件并读取每一行以便可以运行命令。但我无法弄清楚如何在每一行上运行某个 ICU 命令。有人可以帮我吗?我得到的错误是(大文件是脚本名称):./largefile 第 11 行的语法错误,靠近“/”。搜索模式未在 ./largefile 第 11 行终止。
基本上我想打开一个大文本文件并运行命令(通常从命令行运行......我认为我如何在 perl 脚本中调用它是问题,但我不知道如何解决它)“ LD_LIBRARY_PATH=icu/source/lib/ ./a.out "$line" >> newtext.txt" 在每一行上,以便在脚本处理完之后用所有行填充 "newtext.txt"。ICU 部分正在破坏高棉语。
任何帮助将非常感激!我不是一个程序员...谢谢!
c++ - 如何从 ICU 使用 CalendarAstronomer
我想使用ICU的CalendarAstronomer类来计算给定位置的日落/日出值。
API 很好而且很干净,但是没有安装必要的文件 astro.h。既不使用 apt-get 也不自己建造 ICU。这里有什么问题?CalendarAstronomer 课程是否需要我找不到它们的任何特殊组件?
顺便说一句:主要原因是 ICU 相当自由的许可证。我发现了几个计算日落/日出值的代码示例,但是现在许可证通常很清楚。所以这里有一个替代问题:他们的其他库/代码示例是否使用自由许可证(Apache、BSD)计算 C++ 中的日落/日出?
java - 如何使用 ICU 库转换日文半角/全角字符
我对java不太熟悉(来自c++/c#)。我需要使用 java 来将一些文档从半角日文字符转换为全角。
有人会好心并提供一些例子吗?我没有运气找到一些样品。
只是注意它必须是Java。
php - 使用 PHP 的 intl (ICU) 功能检查有效的字符串编码
使用 ICU 的 PHP 的intl包装器中当前可用的功能,您将如何检查字符串编码的有效性?(例如检查有效的 UTF-8)
我知道它可以用 mbstring、iconv() 和 PCRE 来完成,但我对这个问题特别感兴趣。