首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Perl UTF-8语言环境的问题::Maketext

Perl UTF-8语言环境的问题::Maketext
EN

Stack Overflow用户
提问于 2010-12-14 16:21:35
回答 2查看 560关注 0票数 1

短篇小说:

在Locale::Maketext中我遇到了一个奇怪的问题。当在我的字典中使用“使用utf8”的语用时,有些东西会把德语符号变成ISO-8859-1编码。

长篇故事:

在我的web应用程序中,所有内容都保存在UTF-8中:

  • 数据库
  • 源代码文件
  • html文档类型
  • 还有我所能知道的其他一切

我使用Locale::Maketext作为L10N,所有麻省理工学院的词汇都是用Perl模块定义的,这些模块保存在UTF-8和“Useutf8”中。所有语言测试到目前为止(例如pt,pl,fr,en,zh,ko,et。A.)工作得很好,除了现场。只要在这门语言的词汇中启用"use utf8“,就可以将德语中的空话(可能是所有没有7位ASCII的内容)转换为ISO-8859-1。我有一个脚本来验证我的源树中的所有东西都是用UTF-8编码的(当然包括7位的ASCII )。

让我重复一遍:如果我删除模块MyApp::L10N::的"use utf8"实用程序,那么在中使用maketext后得到的编码是UTF-8,这很好。只要模块使用utf8,编码就会转换为ISO-8859-1,而所有其他语言都能工作。我非常想找出原因,因为这与我所读到的关于utf8实用主义的内容不完全相符。

我的问题很简单:为什么会发生这种情况?如何修复这种行为,即如何使我的应用程序在all源文件中使用utf8?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-12-16 10:51:30

我找到了一个解决方案:将所有输入和输出设置为utf8确实有效。Perl做了一些愚蠢的转换。

我刚把这个放在我剧本的开头:

代码语言:javascript
复制
binmode STDIN, ":utf8";
binmode STDOUT, ":utf8";
binmode STDERR, ":utf8";
票数 0
EN

Stack Overflow用户

发布于 2010-12-14 17:32:34

您正在经历的失败记录在地区::Maketext::Gettext中。

此Locale::Maketext::Gettext相对于原始Locale::Maketext(3)的一个基本好处是: GNU gettext是多字节安全的,但Perl源代码不是。…很抱歉这么说,但是本地化框架不具有多字节安全是很奇怪的。

建议您从Maketext迁移到一个基于Gettext的解决方案,请参阅拉西的显著的rocalisation咆哮:http://rassie.org/archives/247

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4441399

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档