我正在帮助客户将他们的Perl平面文件公告板网站从ISO-8859-1转换为Unicode.
由于这是我第一次,我想知道以下"清单"是否完整.一切都在测试中很好用,但我可能会遗漏一些只会在极少数情况下发生的事情.
这是我到目前为止所做的事情(请原谅我只包括"摘要"代码示例):
确保文件始终以UTF-8读写:
use open ':utf8';
Run Code Online (Sandbox Code Playgroud)确保收到CGI输入为UTF-8(该站点未使用CGI.pm):
s{%([a-fA-F0-9]{2})}{ pack ("C", hex ($1)) }eg; # Kept from existing code
s{%u([0-9A-F]{4})}{ pack ('U*', hex ($1)) }eg; # Added
utf8::decode $_;
Run Code Online (Sandbox Code Playgroud)确保文本打印为UTF-8:
binmode STDOUT, ':utf8';
Run Code Online (Sandbox Code Playgroud)确保浏览器将我的内容解释为UTF-8:
Content-Type: text/html; charset=UTF-8
<meta http-equiv="content-type" content="text/html;charset=UTF-8">
Run Code Online (Sandbox Code Playgroud)确保表单发送UTF-8(只要设置了页面编码,可能不需要):
accept-charset="UTF-8"
Run Code Online (Sandbox Code Playgroud)不要认为我需要以下内容,因为内联文本(菜单,标题等)仅以ASCII格式显示:
use utf8;
Run Code Online (Sandbox Code Playgroud)这看起来合理还是我错过了什么?
编辑:我可能还应该提到,我们将运行一次性批处理来读取所有现有的文本数据文件并将其保存为UTF-8编码.
我需要从文件中排序行,保存为UTF-8.这些行可以以西里尔字母或拉丁字符开头.我的代码在西里尔字母上工作错误.
sub sort_by_default {
my @sorted_lines = sort {
$a <=> $b
||
fc( $a) cmp fc($b)
} @_;
}
Run Code Online (Sandbox Code Playgroud)