是否可以在geany中以特定编码打开文件?

Edd*_*_Em 3 locale geany

我的系统语言环境是 ru_RU.KOI8-R,我希望 geany 以这种编码创建所有新文件。在它的设置中,我将“默认编码(新文件)”设置为“西里尔文(KOI8-R)”,它适用于新文件。但是当我打开任何没有西里尔字符的文件时,geany 认为它是 Unicode。

有没有办法告诉 geany 打开 KOI8-R 中的所有文件(即使其中没​​有非 ASCII 字符),或者唯一的方法是将代码页上半部分的任何字符放入所有源文件?

Geo*_*iou 5

我试图解决这个问题,但似乎 Geany 强制使用编码的唯一方法是在文件的开头有一个相应的行。如果文件包含 UTF-8 字符,geany 将使用此语言环境。

除其他外,我尝试了以下内容。您也可以自己尝试一下,以防在您的机器上效果更好。

  • 将我的系统的语言环境切换为希腊语ISO-8859-7(以前是en_US.UTF-8)。我必须首先使用安装新的本地dpkg-reconfigure locales

  • 使用命令将测试文件从UTF-8所需的语言环境转换为所需的语言环境(ISO-8859-7在我的情况下)iconv -f UTF-8 -t ISO-8859-7 c.txt --output=c2.txt

  • 要更改 geany 首选项,请在首选项-文件选项卡中Greek ISO-8859-7为新文件和“默认编码(现有非 Unicode 文件)”应用编码

PS:设置也可以通过查看/编辑文件直接验证/更改~/.config/geany/geany.conf并查找行pref_editor_default_new_encoding=UTF-8 #changed to ISO-8859-7和行pref_editor_default_open_encoding=None #changed to ISO-8859-7

  • 然后唯一真正有效的是在文件的开头插入行:
    # geany_encoding=ISO-8859-7 #

这个解决方案在Geany 在线手册 - Infile 编码规范部分有描述。

作为避免一个一个打开所有文件并附加上一行的解决方法,您可以使用:

echo -e "# geany_encoding=ISO-8859-7 #\n$(cat c.txt)" >c.txt
Run Code Online (Sandbox Code Playgroud)

您还可以进行循环以快速“geany-convert”您的所有文件;像这样:

for file in "$(find . -type f -name "*.txt");do echo -e "# geany_encoding=ISO-8859-7 #\n$(cat $file)" >$file;done
Run Code Online (Sandbox Code Playgroud)

我希望以上想法可以帮助您解决问题。

您还可以检查并询问 geany 开发人员是否在 Geany 的未来计划中在打开文件期间强制编码。

PS:您可以随时打开文件,就像在 Geany 中一样,按下reload as <your encoding>并保存。这应该以新的编码保存文件。