如何将TPerlRegex与Unicode一起使用

时间:2014-03-16 17:27:25

标签: delphi delphi-xe5

如何将TPerRegex与常规Delphi String类型一起使用,避免任何UTF-8<> UTF-16字符串转换。看来Delphi XE5没有配备支持UTF-16的PCRE库吗?

http://qc.embarcadero.com/wc/qcmain.aspx?d=108941

从版本8.30开始,PCRE支持Unicode。

2 个答案:

答案 0 :(得分:4)

嵌入Delphi的AFAIK PCRE库不是使用UTF-16 API编译的,而是使用UTF-8 API编译的。

再次,UTF-8与UTF-16一样准备好了Unicode!因此,嵌入在Delphi XE5中的PCRE版本是100%Unicode就绪......:)

您的链接另外说明current implementation is dead slow由于错误的标记:PCRE_NO_UTF8_CHECK在EMB的代码中缺失。

您可以尝试直接使用lib as we did here,然后绕过慢TPerlRegEx类。

减速并非来自使用UTF-8版本库的事实。 UTF-8版本与UTF-16版本一样快。 UTF-16转换为UTF-8转换本身也不会缓慢:它只会略微放缓。但问题是缺少PCRE_NO_UTF8_CHECK标志......

答案 1 :(得分:0)

解决方案是使用JclPCRE并静态链接PCRE