打开po文件时poEdit编码错误

Posted

技术标签:

【中文标题】打开po文件时poEdit编码错误【英文标题】:poEdit encoding wrong when opening po-files 【发布时间】:2016-12-21 12:14:44 【问题描述】:

我在工作中使用 poEdit,但我在 po 文件中的编码遇到问题。

我有 poEdit(1.8.8 版)和 MacBook Pro(10.11.4 版)。 我正在尝试从英语翻译成瑞典语,那里有旧的翻译。但是编码错误,所以我看不到“ä”、“å”和“ö”字符。

更新版本:

我使用 github desktop,当我同步它们的文件时,github desktop 喜欢在我的文件中编写一些代码。而且我 100% 确信 github 桌面可以做到这一点,因为 .po 文件在同步之前运行良好,而且我无法从其他任何地方获取此代码。

这是 github 桌面在我的文件中写入的内容:

blabla

<<<<<<< HEAD 

"POT-Creation-Date: 2016-07-23 00:13+0000\n"
"PO-Revision-Date: 2016-08-03 17:23+0300\n"

=======

"POT-Creation-Date: 2016-08-11 18:37+0000\n"
"PO-Revision-Date: 2016-08-11 18:37+0000\n"

>>>>>>> origin/master

blabla

Sooo,>>>>>> 起源/大师?!?!?!?!?!??!?! 为什么选择 github 桌面? 为什么 poEdit 不能使用它?

我删除了它,一切正常。

旧版本:

当我使用“Sublime text 3”或“textEditor”等其他应用程序打开 .po 文件时,编码正确(即 UTF-8)并且“ä”、“å”和“ö”可见。但是如果我用 poEdit 打开同一个文件,编码将是 ISO-8859-1,这是 'ä','å,'ö' 的输出:

'ä' => 'ä',

'å' => 'Ã¥',

'ö' => 'ö'.

我已尝试更改“目录 -> 属性 -> 字符集”中的编码,但没有任何改变。

我的问题是: 如何使用 poEdit 打开 .po 文件,使编码为 UTF-8。

【问题讨论】:

【参考方案1】:

Poedit 似乎在理解使用 Notepad++ 生成的文件的编码方面存在一些问题,因此您可以尝试在文件顶部添加这四行,然后再使用 poedit 打开它:

msgid ""
msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"X-Poedit-SourceCharset: UTF-8\n"

【讨论】:

【参考方案2】:

我解决了,删除了 github 桌面在我的代码中放置的内容。

这个:

blabla

<<<<<<< HEAD 

"POT-Creation-Date: 2016-07-23 00:13+0000\n"
"PO-Revision-Date: 2016-08-03 17:23+0300\n"

=======

"POT-Creation-Date: 2016-08-11 18:37+0000\n"
"PO-Revision-Date: 2016-08-11 18:37+0000\n"

>>>>>>> origin/master

blabla

变成这样:

blabla    

"POT-Creation-Date: 2016-07-23 00:13+0000\n"
"PO-Revision-Date: 2016-08-03 17:23+0300\n"

blabla

不需要双倍的 POT-Creation-Date 和 PO-Revision-Date。

【讨论】:

【参考方案3】:

Catalog → Properties → Charset 确实改变了一些东西:文件的编码。它不会改变内容

您的问题是您有一个损坏的 PO 文件(不是由 Poedit 或健全的 gettext 工具创建的),它与它的编码有关。 Sublime Text 中的字符集“正确”并不是真的,它只是默认为 UTF-8。您未提供的文件必须在其编码方面撒谎,并且 Poedit 信任它。换句话说,旧的 Garbage In, Garbage Out 原则。

在文本编辑器中手动将损坏的 PO 的 Content-Type 标头修复为可能(!)UTF-8,一切都会正确。

【讨论】:

它一直是 UTF-8,但这只是我一直在使用 github 桌面的最奇怪的东西,并且在同步它时在我的代码中写了一些奇怪的东西,例如:>>>>>> 起源/主人。我把它擦掉了,砰,它起作用了。你知道为什么 github desktop 会把这些东西写到我的代码中吗?

以上是关于打开po文件时poEdit编码错误的主要内容,如果未能解决你的问题,请参考以下文章

如何找到 POEdit 错误

如何使用 poedit 从 js 文件生成 po 文件

Poedit:Html/Html5 文件的“源代码不可用错误”

使用 PoEditor 添加翻译

使用 Poedit 在哪里确定“源文本”

如何在 php 中运行或加载 .po/.mo 文件以进行本地化