以下是示例代码片段:
my $str = '21156_MLA Ã Copy4.ens';我在代码中使用了这个$str,它应该显示为21156_MLA ß Copy4.ens。
我上传了一个文件名为21156_MLA ß Copy4.ens的文件,但在浏览器显示中显示为21156_MLA Ã Copy4.ens。在数据库中,它被正确地存储为ß,但是当我们(使用fetchall_hashref)从DB中检索它时,它将被转换为Ã。随后,浏览器上的显示是21156_MLA Ã Copy4.ens。如何在这里避免这种转换?
发布于 2013-01-22 15:54:14
检查下面的模块。他们有你需要的信息:
https://metacpan.org/pod/Encode
https://metacpan.org/pod/MIME::QuotedPrint
因为到目前为止你还没有发布你尝试过的东西,所以我不会从头开始写代码。但是,请查看上面的perl模块文档,它们提供了相关信息。
发布于 2013-01-22 17:31:39
如果您的源代码文件编码为UTF-8,则需要指定:
use utf8;在源代码文件中,告诉解释器源代码中可能嵌入了UTF-8格式的字符串。
请参阅http://perldoc.perl.org/utf8.html
发布于 2013-01-22 19:07:04
正如PP所指出的,First,如果你的源文件是用UTF8编码的,你应该使用use utf8;,这样Perl就会知道并正确地解释其中的任何字符串文字。
对于第二个,请确保数据库中的文本也已正确编码。具体细节取决于您的数据库,但例如对于MySQL,最好的方法可能是确保您的文本列具有utf8 character set和utf8_unicode_ci collation (如果需要,或者适当的国家排序规则方案),并在使用DBI连接到数据库时包括mysql_enable_utf8 option。
对于第三个,您需要告诉您也希望您的I/O流也是UTF8编码的。您可以使用binmode()完成此操作,如下所示:
binmode STDOUT, ':utf8';最后是,你还需要告诉浏览器你正在给它发送-8文本。(我怀疑这一部分是您的实际问题所在,但如果您还执行了所有其他步骤,您将实现一个完全支持Unicode的工作流。)您可以通过发送HTTP标头来完成此操作:
Content-Type: text/html; charset=UTF-8和/或等效的HTML meta标签:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />或者,在HTML5中,简单地说:
<meta charset="utf-8">https://stackoverflow.com/questions/14453820
复制相似问题