我的工具IO信息:
我正在以文件名.txt的形式从VB.net创建输出文本文件( paraText.txt )
0 paraText.txt将是Perl的输入文件。
paraText.txt内容:
作者声明: Gerade innerhalb der kulturhistorischen Behandlung die Kultivierung der Zeit durch den Menschen und Zeitbewusstsein einen zentralen Platz ein。Unter dem Stichwort der Zeitkultur strebt die kulturhistorische Forschung nach der人类学家Erkenntnissuche,wie Bewusstsein der Mensch von seiner Zeit hat,wie er mit seiner Zeit umgeht,und ob bzw.Wie er sie gestaltet,sie mit Sinn und dt strukturiert。Dabei将有sinnf llig,dass sich jede Kultur nicht zuletzt durch ihren Umgang mit der Zeit und deren Gliederung definiert: Man unterscheidet zurückliegende und bevorstehende,teils zuürlich,teils zuüsich,teils durch gesellschaftliche bzw.。公司名称: Einen Gro teil dieser Festlichen bildet - der - Komplex des Festlichen。
问题:
当从VB.net创建输出txt文件时,我得到正确的文本如下:

0在Perl调试阶段读取文本时,我得到了类似于未格式化的文本:

您可以看到上面的图片,第一行没有经过相应的编码,
注意:我对输入和输出都使用相同的.txt,但是在perl 5.16.3中调试时,我无法正确地读取文本,使用KomodoEdit8.5,notepad++查看文本
我试过:
我使用vb.net编码从UTF8编写文本文件,
System.Text.Encoding.UTF8
0我在Perl中还使用了UTF8编码,方法如下:
使用编码;使用utf8;使用开放IO =>‘:utf8 8’;使用编码:固定拉丁qw(fix_latin);;
我的代码示例:
#!/usr/bin/perl -w
use strict;
use Cwd;
use HTML::Entities;
use HTML::Entities::Numbered;
use HTML::Strip;
use Encode;
use utf8;
use open IO => ':utf8';
use Encoding::FixLatin qw(fix_latin);;
binmode STDOUT, ":utf8";
binmode STDERR, ":utf8";
binmode STDIN, ":utf8";
my $indPara = getcwd()."/paraText.txt";
open(INDPARA, $indPara) || die "Indesign paraText not found on location!";
my $indesignPara = <INDPARA>;
$indesignPara = fix_latin($indesignPara);
print decode_entities($indesignPara);
close INDPARA;
# I am getting value for $indesignPara as unformatted text like shown in above incorrect image请大家解决这件事
提前感谢
维马尔
发布于 2016-06-07 22:30:16
如果从VB端正确地创建文件,则不需要修复Perl端的任何内容。只需将其理解为UTF-8:
open INDPARA, '<:utf8', $indPara or die ...;在那之后,你读到的任何东西都应该准备好了。
https://stackoverflow.com/questions/23214445
复制相似问题