如何在解码HTML实体时跳过其他语言
此代码块包含不同的语言和HTML实体。如何在解码HTML实体时跳过其他语言
这是功能。请为此提出解决方案。就其本身而言,它也改变了所有其他语言。
#! /usr/bin/perl -w
use HTML::Entities;
use Encode;
my $a = "® , ª , Ñ , ‚ , î , ô , æ , ê , ß , š , ù";
my $b = "Pessimo il servizio della climatizzazione. Da migliorare la ristorazione.";
my $c = "先秦兩漢 ®®® 儒家 孔子家語 子貢問(疑為「子夏問 曲禮子貢問第四十二,子夏問第四十三,疑誤植為「子貢問";
my $d = "漢字仮名交じり文";
my $e = "Очень хорошо все понравилась";
decode_entities($a);
decode_entities($b);
decode_entities($c);
decode_entities($d);
decode_entities($e);
open(OUT,">test.xml");
print OUT '<?xml version="1.0" encoding="UTF-8" ?>'."\n";
print OUT "<Tag1>$a</Tag1>\n";
print OUT "<Tag2>$b</Tag2>\n";
print OUT "<Tag3>$c</Tag3>\n";
print OUT "<Tag4>$d</Tag4>\n";
print OUT "<Tag5>$e</Tag5>\n";
close(OUT);
我想改变只 HTML名称/ HTML数为HTML符号。所有其他数据必须保持原样。
你不说什么问题,但它看起来好像跟HTML::Entities
没什么关系。首先,你已经编写了一个UTF-8编码的程序,而不告诉Perl有关编码;其次,您正在将UTF-8编写为未设置的文件句柄。
另外也必须始终use strict
和use warnings
在每 Perl程序的顶部;在shebang线上的-w
开关将不会做。而且你应该使用的open
三个参数的形式,并且或者检查每一个或use autodie
的状态,这将做到这一点你,如果你有10版或更高版本的Perl 5
你也应该不不断在sort
块之外使用变量$a
或$b
。
所以,你的程序应该是这样的
#! /usr/bin/perl
use utf8;
use strict;
use warnings;
use HTML::Entities;
my @strings = (
'® , ª , Ñ , ‚ , î , ô , æ , ê , ß , š , ù',
'Pessimo il servizio della climatizzazione. Da migliorare la ristorazione.',
'先秦兩漢 ®®® 儒家 孔子家語 子貢問(疑為「子夏問 曲禮子貢問第四十二,子夏問第四十三,疑誤植為「子貢問',
'漢字仮名交じり文',
'Очень хорошо все понравилась',
);
decode_entities($_) for @strings;
open my $out_fh, '>:encoding(UTF-8)', 'test.xml'
or die qq{Unable to open "test.xml" for output: $!};
print $out_fh qq{<?xml version="1.0" encoding="UTF-8" ?>\n};
print $out_fh "<Tag1>$_</Tag1>\n" for @strings;
close $out_fh;
在我的系统,这使以下文本test.xml
,这正是我所期望的。
<?xml version="1.0" encoding="UTF-8" ?>
<Tag1>® , ª , Ñ , ‚ , î , ô , æ , ê , ß , š , ù</Tag1>
<Tag1>Pessimo il servizio della climatizzazione. Da migliorare la ristorazione.</Tag1>
<Tag1>先秦兩漢 ®®® 儒家 孔子家語 子貢問(疑為「子夏問 曲禮子貢問第四十二,子夏問第四十三,疑誤植為「子貢問</Tag1>
<Tag1>漢字仮名交じり文</Tag1>
<Tag1>Очень хорошо все понравилась</Tag1>
评论
对于那些有兴趣,谷歌翻译都提供空调以下
$strings[1]
意大利服务不好。改善食物。$strings[2]
中国(汉族)秦和孔子的汉®®®论语,子贡问(疑似“子夏问音乐人子贡问第四十二,第四十三届子夏问,疑误植为”子贡问$strings[3]
中国(汉族)字符樊文名哨吉り$strings[4]
俄罗斯很好很喜欢所有
Thnaks为您提供指导。我也得到相同的输出,但只在记事本++。当我用浏览器尝试这个时,它会失败,vi编辑器(Putty)也不会显示正确的输出,并且在xmllint命令时失败 – 2014-10-31 04:59:10
'decode_entities()'不会做任何这些字符。你有什么具体问题?我认为你把它归咎于错误的组件。 – AKHolland 2014-10-30 13:40:00
您的源代码不可能包含您所说的内容。如果没有'use utf8;',源代码应该是US-ASCII,'先'不是ASCII字符。 – ikegami 2014-10-30 14:24:41