我的系统区域设置是 ru_RU.KOI8-R,我希望 geany 以这种编码创建所有新文件。在其设置中,我将“默认编码(新文件)”设置为“西里尔文(KOI8-R)”,它适用于新文件。但是当我打开任何没有西里尔字符的文件时,geany 认为它是 Unicode 格式的。
有没有办法告诉 geany 打开 KOI8-R 中的所有文件(即使其中没有非 ASCII 字符),或者唯一的方法是将代码页上半部分的任何字符放入所有源文件中?
答案1
我试图解决这个问题,但似乎 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 文件)”应用编码
~/.config/geany/geany.conf
PS:设置也可以直接通过查看/编辑文件并查找行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
您还可以创建一个循环来快速“geany-convert”您的所有文件;像这样的东西:
for file in "$(find . -type f -name "*.txt");do echo -e "# geany_encoding=ISO-8859-7 #\n$(cat $file)" >$file;done
我希望以上想法能够帮助您解决您的问题。
您还可以检查并询问 geany 开发人员,在打开文件时强制编码是否属于 Geany 的未来计划。
PS:您始终可以在 Geany 中打开文件,然后按reload as <your encoding>
并保存。这应该以新的编码保存文件。