如何将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。
答案 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
。