Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net Perl中的编码问题_Vb.net_Perl_Encoding_Utf 8_Decode - Fatal编程技术网

Vb.net Perl中的编码问题

Vb.net Perl中的编码问题,vb.net,perl,encoding,utf-8,decode,Vb.net,Perl,Encoding,Utf 8,Decode,我的工具IO信息: ○ 我正在从VB.net创建输出文本文件.txt,文件名为paraText.txt ○ paraText.txt将是Perl的输入文件 paraText.txt内容: 杰拉德·内尔哈尔布在文化史上表现出色 男人和女人的生活方式 在天顶广场。在时代文化街上 人类历史中的文化历史 Erkenntnisseche,welches Bewusstsein der Mensch von seiner Zeit帽子, 这是一个很好的例子。你是盖斯泰尔特,是吗 麻省理工学院。达贝·维尔德·

我的工具IO信息:

○ 我正在从VB.net创建输出文本文件.txt,文件名为paraText.txt

○ paraText.txt将是Perl的输入文件

paraText.txt内容:

杰拉德·内尔哈尔布在文化史上表现出色 男人和女人的生活方式 在天顶广场。在时代文化街上 人类历史中的文化历史 Erkenntnisseche,welches Bewusstsein der Mensch von seiner Zeit帽子, 这是一个很好的例子。你是盖斯泰尔特,是吗 麻省理工学院。达贝·维尔德·辛菲利格,达斯·西奇 我的文化背景与时代不同 Gliederung definiert:一个不受约束的人 bevorstehende,teils willkürlich,teils durch gesellschaftliche bzw。 自然资源 埃雷格尼塞。这是一个很好的例子- Festlichen公园

问题:

○ 从VB.net创建输出txt文件时,我得到如下正确文本:

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

您可以看到上图,第一行编码不正确

注意:我对in和out使用相同的.txt,但在perl 5.16.3中使用Komodo edit 8.5,notepad++查看文本时,无法正确读取文本

我试过:

○ 我使用UTF8编码从vb.net编写文本文件

System.Text.Encoding.UTF8

○ 我还使用以下方式在Perl中使用UTF8编码:

我的代码示例:

#!/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
请任何人解决这个问题

提前谢谢


Vimal

如果从VB端正确创建文件,则不需要在Perl端修复任何内容。仅将其理解为UTF-8:

open INDPARA, '<:utf8', $indPara or die ...;

在这之后,您阅读的任何内容都应该准备就绪。

似乎您用来显示文件的内容在第一行使用了不同的字体。纯文本文件不指定字体,因此与Perl无关。尝试使用其他工具查看文件。谢谢Choroba,是的,你说得对,我为任何文本的第一行显示不同的字体,我尝试使用Sublime查看,在sublime中,它显示正确,因此我尝试复制并在一个文件中查找两个内容,但我只能找到一个项目,这是真实的文本文件内容,但我无法获得格式化的文本。我将重复您的问题-您输入文件的编码是什么?如何从输入文件中读取数据?如何解码从输入文件读取的数据。您希望在输出文件中使用什么编码?如何将数据写入输出文件?您如何对写入输出文件的数据进行编码?请给我们一个非常简短但完整的示例程序来演示这个问题。你可能还遗漏了其他一些东西。另外,在学习Perl的最后,我有一本Perl Unicode入门。
open INDPARA, '<:utf8', $indPara or die ...;