我试图写一个合理的宽容validation器的名称在PHP中,我的第一次尝试包括以下模式: // unicode letters, apostrophe, hyphen, space $namePattern = "/^([\\p{L}'\\- ])+$/"; 这最终传递给preg_match()的调用。 据我所知,这与你的香草ASCII字母表一起工作,但似乎在sp或张之类的更为棘手的字符上绊倒。 模式本身有什么问题吗? 也许我希望\p{L}做比我想象的更多的工作? 或者它与传入input的方式有什么关系? 我不确定它是否相关,但确实在表单页面上指定了UTF8编码。
U + 4E00..U + 9FFF是完整集合的一部分,但不是全部
我使用Python 2从ASCII编码的文本文件中parsingJSON。 当用json或simplejson加载这些文件时,我所有的string值都被转换为Unicode对象而不是string对象。 问题是,我必须使用一些只接受string对象的库的数据。 我不能更改库或更新它们。 是否有可能获得string对象而不是Unicode的? 例 >>> import json >>> original_list = ['a', 'b'] >>> json_list = json.dumps(original_list) >>> json_list '["a", "b"]' >>> new_list = json.loads(json_list) >>> new_list [u'a', u'b'] # I want these to be of type `str`, not `unicode` 更新 很久以前,当我被Python 2困住时,这个问题被问到了 。 今天一个简单而干净的解决scheme就是使用Python的最新版本 – 即Python 3和forward。
示例代码: >>> import json >>> json_string = json.dumps("ברי צקלה") >>> print json_string "\u05d1\u05e8\u05d9 \u05e6\u05e7\u05dc\u05d4" 问题是:这不是人类可读的。 我的(聪明的)用户想要使用JSON转储validation甚至编辑文本文件。 (我宁愿不使用XML) 有没有办法将对象序列化为utf-8 jsonstring(而不是\ uXXXX)? 这没有帮助: >>> output = json_string.decode('string-escape') "\u05d1\u05e8\u05d9 \u05e6\u05e7\u05dc\u05d4" 这工作,但如果任何子对象是一个python-unicode而不是utf-8,它会转储垃圾: >>> #### ok: >>> s= json.dumps( "ברי צקלה", ensure_ascii=False) >>> print json.loads(s) ברי צקלה >>> #### NOT ok: >>> d={ 1: "ברי צקלה", 2: u"ברי צקלה" } […]
我已经看到了像下面写在各种论坛上的称为Zalgo的奇怪格式的文本。 这看起来有些恼人,但它真的困扰我,因为它破坏了我对angular色应该是什么的概念。 我的理解是,一个angular色应该水平移动,保持在一个特定的“容器”内。 Zalgo文本显然是垂直移动的,似乎不受任何空间限制。 这是一个错误/缺陷/利用/黑客在Unicode? 这些个性怪异的属性? 这里发生了什么? H̙͉̥̬͙̟̮͕ͤ̌͗ͩ̕͡w͓͙͖̥͉̹͎͉͖͋ͬ̊ͦ̌ͯ̚d͈͕̯̮̙̣͓͌ͭ̍̐͒e͈͕̯̮̙̣͓͌ͭ̍̐͒s̸͙͔̺͇̗̤͓̞̫̿̊̇ͩͩ͑̋ͮͥͦ̊͞Z̆̊͊҉҉̠̦̩͕ą̟̹͈̺̹̋̅ͯĺ̡̘̹̻̩̩͋͘g̪͚͗ͬ͒o̢̢̖͇̬͍͇͓͈͙̔͋͊̓ͣ̏̿͐ͯ͠t̛͓̖̻ͤ̈ͣ͝e͋̄ͬ̽͜҉͚̭͇x͎̬̠͇̌ͤ̓̓͐͐͋͡ţ̗̹̝̮̗̩̳̄̌ͧͩ̾̕͢w͎̭̤͍͇̰̄͗ͭ͗ͮ̐o̢̯̻̰̼͕̾ͣͬ̽̔̍͟r̢̪͙͍̠ǩ̵̶̗̮̮ͪ?̙͉̥̬͙̟̮͕ͤ̌͗ͩ̕͡
当使用“特殊的”Unicode字符时,当它们编码为JSON时,它们会出现怪异的垃圾: php > echo json_encode(['foo' => '馬']); {"foo":"\u99ac"} 为什么? 我的编码做错了吗? (这是一个参考性的问题,一劳永逸地澄清这个话题,因为这个问题一再出现。)
我怎样才能转换这个string: This string contains the Unicode character Pi(π) 转换成一个转义的ASCIIstring: This string contains the Unicode character Pi(\u03a0) 反之亦然 ? 在C#中可用的当前编码将π字符转换为“?”。 我需要保留这个angular色。
什么是在字符集之间转换文本文件的最快速,最简单的工具或方法? 具体来说,我需要从UTF-8转换为ISO-8859-15,反之亦然。 一切顺利:您最喜爱的脚本语言,命令行工具或其他OS,网站等工具。 目前最好的解决scheme: 在Linux / UNIX / OS X / cygwin上: 由Troels Arvinbuild议的Gnu iconv最适合用作filter 。 这似乎是普遍可用的。 例: $ iconv -f UTF-8 -t ISO-8859-15 in.txt > out.txt 正如Ben所指出的那样,有一个使用iconv的在线转换器 。 由Cheekysoftbuild议的Gnu recode ( 手动 )将转换一个或几个文件到位 。 例: $ recode UTF8..ISO-8859-15 in.txt 这个使用较短的别名: $ recode utf8..l9 in.txt Recode还支持可用于在不同行结束types和编码之间转换的表面 : 将换行从LF(Unix)转换为CR-LF(DOS): $ recode ../CR-LF in.txt Base64编码文件: $ recode […]
许多现代正则expression式实现将\w字符类速记解释为“任何字母,数字或连接标点符号”(通常是:下划线)。 这样,像\w+这样的正则expression式就可以匹配hello , élève , GOÄ_432或gefräßig等词语。 不幸的是,Java不。 在Java中, \w仅限于[A-Za-z0-9_] 。 这使得上面提到的那些匹配词难以解决,还有其他一些问题。 它也似乎是\b字分隔符匹配的地方,它不应该。 在Java中,类似.NET的,支持Unicode的\w或\b的正确等价物是什么? 哪些其他快捷方式需要“重写”,使他们的Unicode感知?
你如何将一个Unicodestring(包含额外的字符,如$ $等)转换为一个Pythonstring?