5

我正在编写的库中的一个函数返回一个字符串,当尝试通过正则表达式或index函数定位 unicode 字符时,该字符串会出现问题。字符串正常打印(使用 Sublime text 的控制台进行 unicode 打印),如下所示:

<xml>V日한ế&lt;/xml>

我正在尝试像这样匹配它$string =~ m/V日한ế/:我正在使用utf8.

抱歉,我无法重现一个最小的破坏示例,因为当我自己构建字符串并尝试匹配它时,一切正常。我尝试使用hexdump站点中的函数,但它为库返回的字符串和我构造的字符串 ( ):中的 unicode 字符打印相同的十六进制序列。库中的那个关闭了 utf 标志,而构建的那个没有,但是另一项测试告诉我这不是问题。$string2 = 'V日한ế'56 e6 97 a5 ed 95 9c e1 ba bf

关于问题的根源,我只有一个线索:带有use re 'debug';. 它给出以下消息:

Matching REx "V%x{65e5}%x{d55c}%x{1ebf}" against "%n<xml>V%x{e6}%x{97}%x{a5}%x{ed}%x{95}%x{9c}%x{e1}%x{ba}"...

它在正则表达式中打印字符“日” as%x{65e5}和在有问题的字符串中打印相同的字符 as %x{e6}%x{97}。其他 unicode 字符的打印方式类似。

任何有调试字符串和编码经验的人都可以告诉我为什么 regex 并且index找不到我知道存在于我的字符串中的 unicode 字符,以及如何让这些函数找到它们?

4

1 回答 1

3
于 2013-08-21T06:07:40.827 回答