标签: unicode-normalization

嗯,为什么找'?' 或'2'返回相同的记录?

原谅我的新手问题,但为什么要找'?' 或者Mysql中的'2'返回相同的记录?

例如:

假设我有一个名为'slug'的字符串字段的记录,值为'?'.以下SQL返回相同的记录.

SELECT * From articles WHERE slug='2'  
SELECT * From articles WHERE slug='?' 
Run Code Online (Sandbox Code Playgroud)

mysql sql unicode collation unicode-normalization

9
推荐指数
1
解决办法
193
查看次数

Python正则表达式\ w与组合变音符号不匹配?

我有一个结合了变音符号的UTF8字符串.我想将它与\w正则表达式序列匹配.它匹配具有重音符号的字符,但如果存在组合变音符号的拉丁字符则不匹配.

>>> re.match("a\w\w\wz", u"aoooz", re.UNICODE)
<_sre.SRE_Match object at 0xb7788f38>
>>> print u"ao\u00F3oz"
aoóoz
>>> re.match("a\w\w\wz", u"ao\u00F3oz", re.UNICODE)
<_sre.SRE_Match object at 0xb7788f38>
>>> re.match("a\w\w\wz", u"aoo\u0301oz", re.UNICODE)
>>> print u"aoo\u0301oz"
ao?ooz
Run Code Online (Sandbox Code Playgroud)

(看起来SO降价处理器在上面的组合变音符号有问题,但最后一行有一个)

反正将变音符号与\w?相匹配?我不想规范化文本,因为这个文本来自文件名,我不想要做一个完整的'文件名unicode规范化'.这是Python 2.5.

python regex unicode diacritics unicode-normalization

9
推荐指数
1
解决办法
2261
查看次数

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

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

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

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

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

更新:在这种情况下,我最终将文件rsyncing到运行Ubuntu的虚拟机,在那里运行convmv,然后再次rsyncing到我的登台服务器.虽然这种方法运行得相当好,但有点耗费时间.也许可以在OS X上安装一个ext文件系统,而只是使用原始的NFC分解文件名将文件存储在那里?

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

macos rsync decomposition unicode-normalization web

9
推荐指数
2
解决办法
5371
查看次数

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

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

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

我的问题是,有什么方法可以将所有转义字符转换为各自的UTF-8字符,例如,如果有'à'我如何将其转换为标准'a'?

Python调用代码:

import os
word = 'apple'
os.system(r'wget.lnk --directory-prefix=G:/projects/words/dictionary/urls/ --output-document=G:\projects\words\dictionary\urls/' + word + '-dict.html http://dictionary.reference.com/browse/' + word)
Run Code Online (Sandbox Code Playgroud)

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

python unicode wget unicode-normalization

9
推荐指数
2
解决办法
2万
查看次数

如何在java中将"i"与土耳其语匹配?

我想将英语(i)的"I"的小写字母与土耳其语(i)的"İ"的小写字母相匹配.它们是相同的字形,但它们不匹配.当我做System.out.println("?".toLowerCase());字符i和打印点(此网站不能正确显示)

有没有办法匹配那些?(最好没有硬编码)我想让程序匹配与语言和utf代码无关的相同字形.这可能吗?

我测试了规范化没有成功.

public static void main(String... a) {
    String iTurkish = "\u0130";//"?";
    String iEnglish = "I";
    prin(iTurkish);
    prin(iEnglish);
}

private static void prin(String s) {
    System.out.print(s);
    System.out.print(" -  Normalized : " + Normalizer.normalize(s, Normalizer.Form.NFD));
    System.out.print(" - lower case: " + s.toLowerCase());
    System.out.print(" -  Lower case Normalized : " + Normalizer.normalize(s.toLowerCase(), Normalizer.Form.NFD));
    System.out.println();

}
Run Code Online (Sandbox Code Playgroud)

结果未在网站中正确显示,但第一行(iTurkish)仍然具有? 接近小写的i.

目的和问题

这将是一个多语言词典.我希望程序能够识别"İFEL"以"if"开头.为了确保它们不区分大小写,我首先将两个文本转换为小写.İFEL成为i(点)fel并且"if"未被识别为其中的一部分

java unicode normalization unicode-normalization

9
推荐指数
1
解决办法
831
查看次数

如何正确实现Unicode密码?

添加对Unicode密码的支持,这是开发人员不应忽视的重要功能.

仍然,在密码中添加对Unicode的支持是一项棘手的工作,因为相同的文本可以在Unicode中以不同的方式编码,并且您不希望阻止人们因此而登录.

假设您将密码存储为UTF-8,并且请注意此问题与Unicode编码无关,而且与Unicode规范化有关.

现在的问题是你应该如何规范化 Unicode数据?

你必须确保你能够比较它.您需要确保在下一个Unicode标准发布时,它不会使您的密码验证无效.

注意:仍然有一些地方可能永远不会使用Unicode密码,但这个问题不是关于为什么或何时使用Unicode密码,而是关于如何以正确的方式实现它们.

第一次更新

是否可以在不使用ICU的情况下实现这一点,例如使用OS进行规范化?

passwords unicode normalization unicode-normalization text-normalization

8
推荐指数
1
解决办法
909
查看次数

php iconv translit删除重音:不能作为例外工作?

考虑这个简单的代码:

echo iconv('UTF-8', 'ASCII//TRANSLIT', 'è');
Run Code Online (Sandbox Code Playgroud)

它打印

 `e
Run Code Online (Sandbox Code Playgroud)

而不仅仅是

 e
Run Code Online (Sandbox Code Playgroud)

你知道我做错了吗?


添加setlocale后没有任何改变

setlocale(LC_COLLATE, 'en_US.utf8');
echo iconv('UTF-8', 'ASCII//TRANSLIT', 'è');
Run Code Online (Sandbox Code Playgroud)

php string unicode utf-8 unicode-normalization

8
推荐指数
2
解决办法
2万
查看次数

在Python 2.7中使用unicodedata.normalize

再一次,我对unicode问题非常困惑.我无法弄清楚如何成功使用unicodedata.normalize按预期转换非ASCII字符.例如,我想转换字符串

u"Cœur"
Run Code Online (Sandbox Code Playgroud)

u"Coeur"
Run Code Online (Sandbox Code Playgroud)

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

>>> s = u"Cœur"
>>> unicodedata.normalize('NFKD', s) == s
True
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

python unicode normalization unicode-normalization python-2.7

7
推荐指数
2
解决办法
1万
查看次数

如何将路径转换为Mac OS X路径,几乎是NFD正常形式?

Mac通常在HFS +文件系统上运行,该系统规范化路径.也就是说,如果您在其中保存带有重音é的文件(u'\xe9'例如),然后执行a,os.listdir您将看到文件名已转换为u'e\u0301'.这是Python unicodedata模块可以处理的正常unicode NFD规范化.不幸的是,HFS +与NFD并不完全一致,这意味着某些路径不会被标准化,例如u'\ufa1b',尽管它的NFD形式是福的,但不会改变福()u'\u798f'.

那么,如何在Python中进行规范化呢?我可以使用原生API,只要我可以用Python调用它们.

python unicode macos hfs+ unicode-normalization

7
推荐指数
1
解决办法
750
查看次数

NFC 标准化边界是否也扩展了字素簇边界?

这个问题与文本编辑有关。假设您有一段标准化形式的NFC文本,以及一个指向文本中扩展字素簇边界的光标。您想在光标位置插入另一段文本,并确保生成的文本也在 NFC 中。您还希望将光标移动到紧跟在插入文本之后的第一个字素边界上。

现在,由于连接两个都在 NFC 中的字符串不一定会生成也在 NFC 中的字符串,因此您可能需要修改插入点周围的文本。例如,如果您有一个包含 4 个代码点的字符串,如下所示:

[0] LATIN SMALL LETTER B
[1] LATIN SMALL LETTER E
[2] COMBINING MACRON BELOW
--- Cursor location
[3] LATIN SMALL LETTER A
Run Code Online (Sandbox Code Playgroud)

并且您想{COMBINING ACUTE ACCENT, COMBINING DOT ABOVE}在光标位置插入一个 2-codepoints 字符串。那么结果将是:

[0] LATIN SMALL LETTER B
[1] LATIN SMALL LETTER E WITH ACUTE
[2] COMBINING MACRON BELOW
[3] COMBINING DOT ABOVE
--- Cursor location
[4] LATIN SMALL LETTER A
Run Code Online (Sandbox Code Playgroud)

现在我的问题是:在插入字符串后,您如何确定应该将光标放置在哪个偏移量处,从而使光标在插入的字符串之后结束位于字素边界上?在这种特殊情况下,在标准化期间,光标位置后面的文本不可能与前面的文本交互。因此,以下示例 Python 代码将起作用:

import unicodedata

def …
Run Code Online (Sandbox Code Playgroud)

unicode unicode-normalization

7
推荐指数
1
解决办法
81
查看次数