这是一个有点软的问题,如果有更好的地方,请随时告诉我.
我正在开发一些接受需要国际字符的密码的代码 - 所以我需要将输入的unicode字符串与存储的unicode字符串进行比较.很容易.
我的问题是这样的 - 国际字符集的用户通常期望在这种情况下正常化吗?我的谷歌搜索显示了一些冲突,从"总是这样做"(http://unicode.org/faq/normalization.html)到"不要打扰".没有正常化的利弊吗?(即,不太可能猜出密码等)
可能重复:
在GWT中用等效的"eace"替换éàçè...
是否有一些库可用于在gwt中进行unicode规范化操作?(从上下文来保证拉丁O等于西里尔O,例如)
unicode gwt normalization unicode-normalization text-normalization
我需要在Windows和OS X上生成的文件名之间创建映射.我知道OS X "将所有文件名转换为分解的Unicode"但是,"大多数卷格式都不符合这些普通表单的确切规范"
因此,使用标准的UTF8 API将Windows名称转换为NFD并确保我拥有正确的OS X名称似乎并不是一件简单的事情.有没有办法确定实际的OS X文件名是什么,而无需在文件系统中实际创建文件,然后扫描目录以查看实际创建的内容?
我正在使用Java编写文件名列表.
我观察到文件名中的一些单个字符,如a,ö和ü实际上包含一个序列,您可以将其描述为后续的两个单个ASCII字符:
ö由...表示o,¨
我通过检查看到了这个codePointAt().德语名称"Rölli"实际上是"Ro¨lli":
...
20: R, 82
21: o, 111
22: ?, 776
23: l, 108
24: l, 108
25: i, 105
...
Run Code Online (Sandbox Code Playgroud)
¨上面日志中的字符的值为776,即"组合分离".这是一种所谓的组合标记,属于字形,或者更确切地说是组合变音符号.所以这一切都有道理,但我不明白什么软件组件将两个字符组合到一个变音符号,以及指定此行为的位置.
print()的字符串都会显示组合字符,因此它不是上面的某个UI层.什么组件导致组合字符显示为单个组合字符?这一切有多可靠?
Java是一种规范化方法,可以生成组合代码点的单个代码点,就像这里一样吗?对使用正则表达式有帮助...
非常感谢任何提示.
java string character-encoding unicode-normalization combining-marks
在C++中,我们可以在标识符中使用各种Unicode字符.例如,您可以命名变量résumé.
那些带有重音的es可以用不同的方式表示:作为预组合字符或作为e具有组合重音字符的普通字符.许多应用程序规范化这些字符串,以便看似相同的字符串实际匹配.
看看C++标准,我没有看到任何需要编译器规范化标识符的东西,因此变量résumé可能与变量不同re?sume?.(在我的测试中,似乎并不像MSVC或clang标准化标识符.)
是否有任何禁止编译器选择正常形式的东西?如果不是,在翻译的哪个阶段应该进行规范化?
[要明确:我在谈论标识符,而不是字符串文字.]
c++ unicode language-lawyer canonicalization unicode-normalization
您好,我希望这是一个简单的问题,我正在通过 API 加载一些简单的数据,但是有些用户已经将其用户名设置为如下所示的精美字体。
Run Code Online (Sandbox Code Playgroud)
如何使用 PHP 将其转换为简单的标准编码,以便它显示为。
Web Reposts
Run Code Online (Sandbox Code Playgroud)
谢谢
在W3C验证器中验证我的网站的HTML代码时,我收到以下警告:
Line 157, Column 220: Text run is not in Unicode Normalization Form C.
…i??????????v??????????e???????????-????????????m??????????i??????????n????????…
Run Code Online (Sandbox Code Playgroud)
我正在PHP 5.3.x中开发它,所以我可以使用Normalizer类.
因此,为了解决这个问题,我应该Normalizer::normalize($output)在显示用户做出的任何输入时使用(例如注释),还是应该Normalizer::normalize($input)在将其存储到数据库之前用于任何用户输入?
tl; dr:我应该在将用户输入存储在数据库中之前还是仅在显示时使用Unicode规范化?
php unicode web-standards normalization unicode-normalization
我正在寻找一个示例文本unicode文件(UTF-8),可用于测试与文本编码和解码相关的不同问题,包括:
主要是我想将文本复制到剪贴板,将其粘贴到应用程序的HTML文本区域,然后能够从页面中检索它.
这将能够识别在解码,编码甚至数据库级别可能发生的不同的Unicode相关问题.
unicode normalization utf-8 character-encoding unicode-normalization
我想检查字符串是否已经是NFC格式.目前我这样做:
unicodedata.normalize('NFC', s) == s
Run Code Online (Sandbox Code Playgroud)
我这样做是为了大量的字符串,所以我想要高效.上述方法似乎很浪费.它转换为NFC,然后进行字符串比较.
有更有效的方法吗?我考虑过:
len(unicodedata.normalize('NFC', s)) == len(s)
Run Code Online (Sandbox Code Playgroud)
这避免了字符串比较.但我不确定这是否总是正确的.如果NFC标准化始终改变非NFC字符串的长度,则此方法有效.这是一个有效的假设吗?
还有其他想法吗?
python unicode normalization unicode-normalization python-unicode
我正在尝试从一些 lisp 文件中获取一串代码,以创建 unix 文件名并将其显示在网页上:
\n(let ((code "(defun \xc2\xb2 (x) (* x x))"))\n (second (read-from-string code)))\nRun Code Online (Sandbox Code Playgroud)\n其评估结果为|2|. 事实上,只需键入即可\'\xc2\xb2计算为|2|, 而不是|\xc2\xb2|。
该code字符串是从文件中读取的。我正在使用 SBCL 2.2.10。
使用此方案,字符串的"x\xc2\xb2"解析方式与字符串相同"x2":
(read-from-string "x\xc2\xb2")\n(read-from-string "x2")\nRun Code Online (Sandbox Code Playgroud)\n如何在read-from-string不对字符串中的代码进行修改的情况下做出正确的更改?