Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.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
Locale GNU gettext msgfilter程序说;无效的多字节序列“;_Locale_Gettext - Fatal编程技术网

Locale GNU gettext msgfilter程序说;无效的多字节序列“;

Locale GNU gettext msgfilter程序说;无效的多字节序列“;,locale,gettext,Locale,Gettext,GNUGetText程序msgfilter似乎不接受UTF8字符串作为作为作为筛选器提供的脚本的结果。脚本只返回从文件读取的准备好的文本 以下是测试设置: echo '#!/bin/bash cat /tmp/t3.txt ' > /tmp/trans01.sh chmod a+rwx /tmp/trans01.sh 然后有一个文件/tmp/t3.txt: cat /tmp/t3.txt 结果: AMSTERDAM REISEFÜHRER FÜR REISE, UNTERKUNFT,

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

以下是测试设置:

echo '#!/bin/bash
cat /tmp/t3.txt
' > /tmp/trans01.sh
chmod a+rwx /tmp/trans01.sh
然后有一个文件/tmp/t3.txt:

cat /tmp/t3.txt
结果:

AMSTERDAM REISEFÜHRER FÜR REISE, UNTERKUNFT, SEHENSWÜRDIGKEITEN     
它是utf-8文件:

file /tmp/t3.txt
给出:

/tmp/t3.txt: UTF-8 Unicode text
msgid "kk71ams_amsterdam_main_page_title"
msgstr "AMSTERDAM TOURIST GUIDE FOR TRAVEL, ACCOMMODATION, ATTRACTIONS"
/tmp/te1.po: GNU gettext message catalogue, ASCII text
进一步:

echo 'msgid "kk71ams_amsterdam_main_page_title"
msgstr "AMSTERDAM TOURIST GUIDE FOR TRAVEL, ACCOMMODATION, ATTRACTIONS"
' > /tmp/te1.po
比:

给出:

/tmp/t3.txt: UTF-8 Unicode text
msgid "kk71ams_amsterdam_main_page_title"
msgstr "AMSTERDAM TOURIST GUIDE FOR TRAVEL, ACCOMMODATION, ATTRACTIONS"
/tmp/te1.po: GNU gettext message catalogue, ASCII text
比:

给出:

/tmp/t3.txt: UTF-8 Unicode text
msgid "kk71ams_amsterdam_main_page_title"
msgstr "AMSTERDAM TOURIST GUIDE FOR TRAVEL, ACCOMMODATION, ATTRACTIONS"
/tmp/te1.po: GNU gettext message catalogue, ASCII text
区域设置:

:~# 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”的问题是:

~# 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"

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

我有:

"Content-Type: text/plain; charset=ASCII\n"
这是默认设置

并将其更改为:

"Content-Type: text/plain; charset=UTF-8\n"

尽管我的文件也是UTF-8,但我必须明确地更改内容类型中的字符集

我面临着同样的问题(尽管我更喜欢为此尝试拼凑一个工作的makefile),我对您的答案有点困惑。我只知道这些字符串是在web服务器提供文件服务的情况下出现的,你能确切地解释一下你在哪里更改了这一行以让gettext使用äöü之类的东西吗?不管怎样,我找到了它。我的错误是,我不知道我应该简单地复制
.pot
文件,而不是使用一些命令,并尝试使用
touch de.po
,然后使用
msgmerge
,因此缺少标题。(复制才是正确的方法,对吧…?)