问题标签 [unicode-normalization]

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 投票
3 回答
3647 浏览

forms - 使用 Unicode 提交表单时如何避免浏览器 Unicode 规范化

在 HTML 中呈现以下 Unicode 文本时,事实证明,浏览器 (Google Chrome)在将数据发送回服务器时会执行某种形式的Unicode 规范化。(可能在表格 C中)。

但是,当使用圣经希伯来语 (בְּרִיךְ הוּא) 文本时,这很容易破坏文本,如这里所述(第 9 页)。

有什么办法可以避免浏览器自动文本规范化?

我写了一篇博客文章,更详细地描述了我面临的问题:http: //blog.hibernatingrhinos.com/12449/would-it-be-possible-to-have-a-web-browser-based-希伯来文文本编辑器

0 投票
1 回答
1448 浏览

python - 哪种形式的 unicode 规范化适合文本挖掘?

我已经阅读了很多关于 Unicode 的内容,但我仍然对规范化及其不同形式感到非常困惑。简而言之,我正在从事一个项目,该项目涉及从 PDF 文件中提取文本并执行一些语义文本分析。

我已经设法使用一个简单的 python 脚本令人满意地提取文本,但现在我需要确保所有等效的正交字符串都有一个(并且只有一个)表示。例如,“fi”印刷连字应分解为“f”和“i”。

我看到 python 的unicodedata.normalize函数提供了几种用于规范化 unicode 代码点的算法。有人可以解释一下:

  • NFC
  • NFKC
  • NFD
  • NFKD

我阅读了相关的维基百科文章,但对于我微弱的大脑来说,它太不透明了,无法理解。有人可以用简单的英语向我解释一下吗?

另外,您能否推荐一下最适合自然语言处理项目的规范化方法?

0 投票
1 回答
1826 浏览

objective-c - 使用 NFD unicode 的 NSString 规范化

在我的应用程序中,我必须使用 NFD Unicode 系统规范化一个 NSString。我怎样才能做到这一点?我需要将用户输入的字符串转换为规范化的字符串,并且从这个规范化的字符串中,我必须计算一个数字。谁能帮我?

0 投票
0 回答
292 浏览

unicode - QWebView::findText 不适用于 Unicode 的组合变音符号

我正在使用QtWebKit( QWebView) 来显示文本,并且我想通过QWebView::findText.

问题是必须显示的文本包含所谓的 Unicode 的组合变音符号,尽管它们应该忽略这些“标记”(字符),但它们QWebView::findText()和 JavaScriptwindow.find()都不会忽略这些“标记”(字符)。

例如,如果文本中有一个单词“ti̇̀krăs”(“t”,“i”,Combining Dot Above,Combining Grave Accent,“k”,“r”,“a”,Combining Breve,“s”), findText() 在搜索查询“tikras”(“t”、“i”、“k”、“r”、“a”、“s”)时无法找到该词。

在这种情况下,其他基于 WebKit 的浏览器(Chrome、Safari)似乎可以正常工作。

对于这种情况,我能做些什么吗?

0 投票
2 回答
6326 浏览

macos - 将文件传输到 Web 服务器时转换 Unicode 分解

我在 OS X 上进行网站开发,并且经常发现自己将实时网站的某些部分(运行 Linux/LAMP)移动到在我自己的机器上运行的开发服务器上。一个这样的例子涉及下载图像(用户生成的内容,例如通过 ftp 下载),以一种或另一种方式处理它们,然后将它们放回生产站点。

所涉及的图像文件是在 Linux 机器中创建的,它们的文件名似乎使用 NFC 分解以 UTF-8 编码。另一方面,OS X 的 HFS+ 文件系统不允许 NFC 分解文件名并转换为 NFD。但是,一旦我完成并想要上传文件,它们的名称现在将使用 NFD 分解,因为 Linux 支持它们。因此,新上传的(在某些情况下是替换的)文件将无法通过预期的 URL 访问。

我正在寻找一种方法来在(最好)或之后(convmv看起来是一个不错的选择,但我在此服务器上没有足够的权限在这种特殊情况下是不可能的)传输期间更改文件的 UTF 分解,因为我猜这是不可能事先做的。我已经尝试使用 Transmit 和 rsync(使用通常使用的部署脚本)进行 FTP 上传,但无济于事。rsync中的--iconv选项似乎很理想,但不幸的是,我运行 rsync 2.6.9 的服务器无法识别它。

我猜很多人都有类似的问题,我很高兴听到任何解决方案或解决方法!

更新:在这种情况下,我最终将文件同步到运行 Ubuntu 的虚拟机,在那里运行 convmv,然后再次同步到我的登台服务器。虽然这工作得相当好,但它有点耗时。也许可以在 OS X 上挂载一个 ext 文件系统,然后使用它们原来的 NFC 分解文件名将文件存储在那里?

此外,为了在以后的 WordPress 安装中避免这个问题,这是我的用例,你可以在上传任何文件add_filter('sanitize_file_name', 'remove_accents'); 之前添加一个简单的,你应该没问题。

0 投票
3 回答
12559 浏览

python - 在 Python 2.7 中使用 unicodedata.normalize

再一次,我对一个 unicode 问题感到非常困惑。我不知道如何成功使用unicodedata.normalize按预期转换非 ASCII 字符。例如,我想转换字符串

我很确定 unicodedata.normalize 是这样做的方法,但我无法让它工作。它只是保持字符串不变。

我究竟做错了什么?

0 投票
4 回答
537 浏览

ruby - 按字素拆分 Unicode 实体

给我

如何让 Ruby 按字素拆分它?

0 投票
3 回答
1432 浏览

macos - OS X - 如何计算标准化文件名

我需要在 Windows 和 OS X 上生成的文件名之间创建映射。我知道 OS X “将所有文件名转换为分解的 Unicode”,但是“大多数卷格式不遵循这些正常形式的确切规范”

因此,使用标准 UTF8 API 将 Windows 名称转换为 NFD 并确保我拥有正确的 OS X 名称似乎不是一件简单的事情。有没有办法确定实际的 OS X 文件名,而无需在文件系统中实际创建文件,然后扫描目录以查看实际创建的内容?

0 投票
1 回答
476 浏览

php - 字符串比较使用 PHP mysql_* SET NAMES UTF 8 和 Mysql Table With utf8_unicode_ci

我有一个带有State列的 Mysql 表- 这些州来自欧洲各地 - 表和列位于utf8_unicode_ci.

当我调用我使用的数据库时

然后我通过这个简单的循环运行它

当它第一次达到预期的新值时,我得到:

布尔 假
布鲁塞尔
布尔 真

下次我得到:

布尔真
布鲁塞尔
布尔真

正如我所期望的那样。

当每次通过时遇到非拉丁字符时,问题就出现了:

boolean false
Baden-Württember
boolean true

当我将它们设置为相等时,然后当提取下一条记录(并且每条记录输入相同)时,它会失败,这是我使用相同的编码时,我实际上需要它来识别它们是相同的即使输入的字符不同。

不管发生了什么,我都尝试过utf8_encodeNormalizer::normalize从比较中得到一个真实的结果,这样我就可以在控制结构中使用它(例如,如果你上次看到它,这次不要打印它)但它失败了。

0 投票
5 回答
25834 浏览

python - 如何将 unicode 重音字符转换为没有重音的纯 ascii?

我正在尝试从http://dictionary.reference.com/browse/apple?s=t等字典网站下载一些内容

我遇到的问题是原始段落有所有那些波浪线和反向字母等等,所以当我阅读本地文件时,我最终会得到那些有趣的转义字符,如 \x85、\xa7、\x8d 等.

我的问题是,有什么办法可以将所有这些转义字符转换为它们各自的 UTF-8 字符,例如,如果有一个 'à' 我如何将它转换成一个标准的 'a' ?

Python调用代码:

我在 Windows 7 系统上使用 wget-1.11.4-1(不要杀死我的 Linux 人,这是客户端要求),并且 wget exe 正在使用 Python 2.6 脚本文件启动。