Perl   发布时间:2022-04-07  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了将旧版Perl代码移至UTF-8时,我应该注意哪些问题?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
到目前为止,我工作的项目只在源代码中使用ASCII.由于I18N领域即将发生的一些变化,也因为我们在测试中需要一些Unicode字符串,我们正在虑咬住子弹并将源代码移动到UTF-8,同时使用utf8编译指示(使用utf8;)

由于代码现在是ASCII,我不希望代码本身有任何问题.但是,我不太清楚我们可能会遇到任何副作用,而我认为虑到我们的环境(perl5.8.8,Apache2,mod_perl,带FreeTDS驱动程序的MSSQL Server),我很可能会得到一些副作用.

如果你过去做过这样的迁移:我可以期待什么问题?我该如何管理它们?

解决方法

年前,我将我们内部的R_383_11845@od_perl平台(~35k LOC)移至UTF-8.以下是我们必须虑/改变的事情:

>尽管Perl doc建议“只在必要时”,请继续使用’use utf8;’在每个源文件中 – 它为您提供一致性.
>将您的数据库转换为UTF-8并确保您的数据库配置将连接字符集设置为UTF-8(在MySQL中,在执行此操作时请注意VARCHAR的字段长度问题)
>使用最新版本的DBI – 旧版本未在返回的标量上正确设置utf8标志
>使用Encode模块,避免使用perl内置的utf8函数,除非你确切知道你正在处理什么数据
>读取UTF-8文件时,指定图层 – 打开($fh,“<:utf8”,$fileName)
>在RedHat风格的操作系统(甚至2008版本)中,包含的库不喜欢读取存储在utf8标量中的XML文件 – 升级perl或只使用:raw层
>在较旧的perls(甚至5.8.x版本)中,一些较旧的字符串函数可能是不可预测的 – 例如. $b = substr(lc($utf8String),2048)随机失败,但$a = lc($utf8String); $b = substr($a,2048)有效!
>记得转换你的输入 – 例如.在Web应用程序中,传入的表单数据可能需要解码
>确保所有开发人员都知道编码/解码这个术语的方式 – perl中的’utf8字符串’是/ de / -coded形式,包含utf8数据的原始字节字符串是/ en / -coded
>正确处理您的URL – / en / – 将utf8字符串编码为字节,然后执行%xx编码以生成URL的ASCII格式,并在从mod_perl读取时对其进行/ de / -code(例如.$uri = utf_decode($R-> URI()))
>对于Web应用程序,请记住http标头中的字符集会覆盖使用< meta>指定的字符集.
>我确信这一点@R_743_9772@ – 如果你进行任何字节操作(例如,数据包数据,按位操作,甚至MIME内容长度标头),请确保使用字节而不是字符进行计算
>确保您的开发人员知道如何确保他们的文本编辑器设置为UTF-8,即使给定文件上没有BOM
>请记住确保您的修订控制系统(对于Google的好处 – subversion / svn)将正确处理文件
>在可能的情况下,坚持使用ASCII来获取文件名和变量名 – 这可以避免在移动代码或使用不同的开发工具时出现可移植性问题

还有一个 – 这是黄金法则 – 不要只是破解直到它起作用,确保你完全理解在给定的en /解码情况下发生了什么!

我相信你已经把这些中的大部分都整理好了,但希望所有能帮助那些人的人避免我们经历的许多小时调试.

大佬总结

以上是大佬教程为你收集整理的将旧版Perl代码移至UTF-8时,我应该注意哪些问题?全部内容,希望文章能够帮你解决将旧版Perl代码移至UTF-8时,我应该注意哪些问题?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。