Nik*_*nko 7 migration legacy unicode perl utf-8
到目前为止,我工作的项目只在源代码中使用ASCII.由于I18N领域即将发生的一些变化,以及我们在测试中需要一些Unicode字符串,我们正在考虑咬住子弹并将源代码移动到UTF-8,同时使用utf8pragma(use utf8;)
由于代码现在是ASCII,我不希望代码本身有任何问题.但是,我不太清楚我们可能会遇到任何副作用,而我认为考虑到我们的环境(perl5.8.8,Apache2,mod_perl,带FreeTDS驱动程序的MSSQL服务器),我很可能会得到一些副作用.
如果你过去做过这样的迁移:我可以期待什么问题?我该如何管理它们?
bri*_*foy 11
该utf8pragma仅告诉Perl您的源代码是UTF-8编码的.如果你在源代码中只使用了ASCII,那么Perl理解源代码就不会有任何问题.您可能希望在源代码管理中创建一个分支以确保安全.:)
如果您需要处理文件中的UTF-8数据,或者将UTF-8写入文件,则需要在文件句柄上设置编码,并将数据编码为外部位预期的数据.例如,请参阅使用utf8编码的Perl脚本,它是否可以打开编码为GB2312的文件名?.
查看告诉您Unicode的Perl文档:
另请参阅Juerd的Perl Unicode建议.
小智 4
几年前,我将我们内部的 mod_perl 平台 (~35k LOC) 迁移到 UTF-8。以下是我们必须考虑/改变的事情:
open($fh,"<:utf8",$filename):raw层$b=substr(lc($utf8string),0,2048)随机失败但$a=lc($utf8string);$b=substr($a,0,2048)有效!$uri=utf_decode($r->uri()))<meta>还有一点——这是黄金法则——不要只是破解直到它起作用,确保你完全理解给定的编码/解码情况下发生了什么!
我确信您已经解决了大部分问题,但希望所有这些都可以帮助人们避免我们经历的长时间调试。
| 归档时间: | 
 | 
| 查看次数: | 398 次 | 
| 最近记录: |