作者jackieku (Jackie)
看板Perl
标题Re: [问题] 如何把utf8所有的标点符号取代掉?
时间Tue Apr 28 21:16:26 2009
※ 引述《piglon (宣)》之铭言:
: 这两天照着你提供的方向试了
: 可是在读档的时候出现下面的讯息
: utf8 "\xB0" does not map to Unicode at
: E:\doc\20090325Program_jdwang\Program\test2.pl line 23, <FILEHANDLE> line 668.
: 我查了"\xB0"是"°"角度的符号
utf8里面是不会有落单的 \xB0 的
utf8里面单位元的字元只有 \x00 - \x7F (ASCII)
虽然Unicode的(U+00B0)确实是那个符号...
但是它在utf8里面应该是 \xC2\xB0 (双位元)
所以你的input显然不是合法的UTF-8
你或许能够试试下面的程式码
use utf8;
use strict;
# 不用use encoding
# 这两行在Windows下还是不能对console视窗作Unicode output
# 只有当STDIN或是STDOUT是pipe或是档案的时候才有用
binmode STDIN, ':utf8';
binmode STDOUT, ':utf8';
my $InputFile ='A_1_200_20080101_20081231.txt';
open (FILEHANDLE, "<:utf8", "$InputFile") or die "can't not open $InputFile";
while(my $line = <FILEHANDLE>){
print $line;
}
close (FILEHANDLE);
根据 perldoc Encode 里面的说法
在Perl里面utf8比UTF-8来得宽松
--
~我的个人网站,欢迎莅临指教喔~
http://ku.myftp.org/
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.62.164.107
1F:推 piglon:感谢!!!终於解决了!!感谢两位大大!! 04/29 15:18