如何把UTF-8的字符串转成汉字?(不是UTF-8编码)

如何把UTF-8的字符串转成汉字?(不是UTF-8编码)

如下格式,
$str =  "=E5=87=BA=E7=8E=B0core=E6=96=87";
其中的数字是UTF-8的格式,怎样才能转回来呢?
原文是"出现core文"的意思。

你这个格式好奇怪哦

感觉应该是  "%E5%87%BA%E7%8E%B0core%E6%96%87"


use URI::Escape;
print URI::Escape::uri_unescape($str);
lz问题有问题。好像 utf8 是 unicode 的一种存储方法。
你应该看到的是unicode 的编码


QUOTE:
原帖由 xiaoshengcaicai 于 2008-9-4 20:06 发表
你这个格式好奇怪哦

感觉应该是  "%E5%87%BA%E7%8E%B0core%E6%96%87"


use URI::Escape;
print URI::Escape::uri_unescape($str);

多谢
已解决

PS: 这种格式在很多地方用到,很多话单或日志里都是这样表示,都把%替换成=
#!/usr/bin/perl -w

use strict;
use warnings;

use URI::Escape;

$_='=E5=87=BA=E7=8E=B0core=E6=96=87';


s/=/%/g;

print "$_\n";
print URI::Escape::uri_unescape($_);

上边就是例子,但我也有些不明白的地方,在XP的DOS窗口中运行为什么不显示汉字,我把输出重定向到文件,用记事本打开就显示汉字.



QUOTE:
原帖由 dalian_gq 于 2008-9-7 12:36 发表
#!/usr/bin/perl -w

use strict;
use warnings;

use URI::Escape;

$_='=E5=87=BA=E7=8E=B0core=E6=96=87';


s/=/%/g;

print "$_\n";
print URI::Escape::uri_unescape($_);

上边就是例子, ...

locale
我用的是中文XP,区域也是中国。locale如何设置呢?
我也遇到同样的情况,希望有高手帮忙。。。
#!/usr/bin/perl -w

use strict;
use warnings;

use URI::Escape;
use Encode;

$_='=E5=87=BA=E7=8E=B0core=E6=96=87';


s/=/%/g;

print "$_\n";

$_=URI::Escape::uri_unescape($_);
print $_ . "\n";

$_=encode("gb2312", decode("utf8", URI::Escape::uri_unescape($_)));
print $_ . "\n";


搞明白是怎么回事了,上面是例子。
因为XP控制台上使用gb2312编码,所以出现在XP的DOS窗口中运行显示为乱码,把输出重定向到文件,用记事本打开就显示汉字的情况。


感谢forlorngenius

QUOTE:
原帖由 forlorngenius 于 2008-9-11 11:14 发表
encode("utf8", decode("gb2312", $str));

旧贴里也有,新贴总是得到更多关注,人的惰性呀。