首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GNU gettext msgfilter程序显示“无效的多字节序列”

GNU gettext msgfilter程序显示“无效的多字节序列”
EN

Stack Overflow用户
提问于 2018-06-07 02:19:01
回答 1查看 264关注 0票数 0

GNU gettext程序msgfilter似乎不接受UTF8字符串作为作为筛选器提供的脚本的结果。该脚本只返回从文件中读取的准备好的文本。

下面是测试设置:

代码语言:javascript
复制
echo '#!/bin/bash
cat /tmp/t3.txt
' > /tmp/trans01.sh
chmod a+rwx /tmp/trans01.sh

然后有一个文件/tmp/t3.txt:

代码语言:javascript
复制
cat /tmp/t3.txt

结果:

代码语言:javascript
复制
AMSTERDAM REISEFÜHRER FÜR REISE, UNTERKUNFT, SEHENSWÜRDIGKEITEN     

它是utf-8文件:

代码语言:javascript
复制
file /tmp/t3.txt

提供:

代码语言:javascript
复制
/tmp/t3.txt: UTF-8 Unicode text

进一步:

代码语言:javascript
复制
echo 'msgid "kk71ams_amsterdam_main_page_title"
msgstr "AMSTERDAM TOURIST GUIDE FOR TRAVEL, ACCOMMODATION, ATTRACTIONS"
' > /tmp/te1.po

比:

代码语言:javascript
复制
cat /tmp/te1.po

提供:

代码语言:javascript
复制
msgid "kk71ams_amsterdam_main_page_title"
msgstr "AMSTERDAM TOURIST GUIDE FOR TRAVEL, ACCOMMODATION, ATTRACTIONS"

比:

代码语言:javascript
复制
file /tmp/te1.po

提供:

代码语言:javascript
复制
/tmp/te1.po: GNU gettext message catalogue, ASCII text

区域设置:

代码语言:javascript
复制
:~# locale
LANG=
LANGUAGE=
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=

现在是‘msgfilter’的问题:

代码语言:javascript
复制
~# msgfilter -i /tmp/te1.po '/tmp/trans01.sh'
msgid "kk71ams_amsterdam_main_page_title"
/tmp/te1.po:2: invalid multibyte sequence
/tmp/te1.po:2: invalid multibyte sequence
/tmp/te1.po:2: invalid multibyte sequence
/tmp/te1.po:2: invalid multibyte sequence
/tmp/te1.po:2: invalid multibyte sequence
/tmp/te1.po:2: invalid multibyte sequence
/tmp/te1.po:2: invalid multibyte sequence
/tmp/te1.po:2: invalid multibyte sequence
/tmp/te1.po:2: invalid multibyte sequence
/tmp/te1.po:2: invalid multibyte sequence
/tmp/te1.po:2: invalid multibyte sequence
/tmp/te1.po:2: invalid multibyte sequence
msgstr "AMSTERDAM REISEFHRER FR REISE, UNTERKUNFT, SEHENSWRDIGKEITEN\n"
EN

回答 1

Stack Overflow用户

发布于 2019-02-01 21:40:41

不是完全相同的情况,但我有相同的问题,我通过添加正确的内容类型解决了它。

我有:

代码语言:javascript
复制
"Content-Type: text/plain; charset=ASCII\n"

这看起来是默认的。

并将其更改为:

代码语言:javascript
复制
"Content-Type: text/plain; charset=UTF-8\n"

尽管我的文件也是UTF-8格式,但我必须显式地更改Content-Type中的字符集

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

https://stackoverflow.com/questions/50727076

复制
相关文章

相似问题

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