Perl 中的移位 jis 解码/编码
当我尝试解码 shift-jis 编码的字符串并将其编码回来时,某些字符会出现乱码: 我有以下代码:
use Encode qw(decode encode); $val=; print "\nbefore decoding: $val"; my $ustr = Encode::decode("shiftjis",$val); print "\nafter decoding: $ustr"; print "\nbefore encoding: $ustr"; $val = Encode::encode("shiftjis",$ustr); print "\nafter encoding: $val";
当我在输入中使用字符串 : hellosoworld 时,它会被正确解码并编码回来,即在解码之前和编码之后在上面的代码中打印相同的值。 但是当我尝试另一个字符串时,例如: ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ
最终输出出现乱码。
这是 Perl 库特定的问题还是一般的 Shift jis 映射问题? 有什么解决办法吗?
When I try decode a shift-jis encoded string and encode it back, some of the characters get garbled:
I have following code:
use Encode qw(decode encode); $val=; print "\nbefore decoding: $val"; my $ustr = Encode::decode("shiftjis",$val); print "\nafter decoding: $ustr"; print "\nbefore encoding: $ustr"; $val = Encode::encode("shiftjis",$ustr); print "\nafter encoding: $val";
when I use a string : helloソworld in input it gets properly decoded and encoded back,i.e. before decoding and after encoding prints in above code print the same value.
But when I tried another string like : ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ
The end output got garbled.
Is it a perl library specific problem or it is a general shift jis mapping problem?
Is there any solution for it?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您只需将
shiftjis
替换为cp932
即可。http://en.wikipedia.org/wiki/Code_page_932
You should simply replace the
shiftjis
withcp932
.http://en.wikipedia.org/wiki/Code_page_932
你缺乏错误检查。
输出:
You lack error-checking.
Output: