win下modeline乱码,怎么解决?

{7A79850D-4B45-4B10-AAEC-7A32FBDF04AB}_20200525103724

我的编码设置是:

(when (fboundp 'set-charset-priority)
  (set-charset-priority 'unicode))

(prefer-coding-system 'utf-8)

(set-language-environment 'utf-8)
(set-locale-environment "UTF-8")
(set-keyboard-coding-system 'utf-8)
(set-clipboard-coding-system 'utf-8)
(set-terminal-coding-system 'utf-8)
(set-buffer-file-coding-system 'utf-8)
(set-default-coding-systems 'utf-8)
(set-selection-coding-system 'utf-8)
(modify-coding-system-alist 'process "*" 'utf-8)
(set-file-name-coding-system 'utf-8)

在linux下没问题。最近没办法必须在win下面。出现各种问题。泪崩。

麻烦高人给指点下

建议你Windows 开启Unicode支持,这样很多问题都解决了。

设置了。但是乱码问题还是没解决

(when (eq system-type 'windows-nt)
  (setq locale-coding-system 'gb18030)
  (setq w32-unicode-filenames 'nil)
  (setq file-name-coding-system 'gb18030))

(unless (eq system-type 'windows-nt)
  (set-clipboard-coding-system 'utf-8)
  (set-selection-coding-system 'utf-8))

我之前在Windows上的设置。应该是没问题的。

你这个状态栏上的是不是少了什么字体?不知道你用了什么配置?Spacemacs?

gnu emacs 自己配的。modeline用的是doom modeline。

字体我用的是"Source Code Pro“ win也安装了。

另外这个乱码的地方是时间。应该是时间使用了中文。modeline识别不了。

在哪里单独修改时间的编码格式?

兄弟,使用你的显示正常了

{5FFC1FC1-2D8A-4444-94BC-8A1EF454D808}_20200525111503

知道是哪句话起到作用的不?

这个时间的问题,我以前用Purcell的配置在Org-mode遇到过,很头疼。最后是通过直接把Windows的时间格式改成英文格式解决的,我现在Windows也一直用英文的时间格式了。你可以试试

谢谢。我也设置成了英文。问题解决。

按照楼上的兄弟方案时间是显示正常了。org里面的中文又乱了。哎,win真难用

所以还是设置英文简单点,Windows下用Emacs 要折腾的东西确实比较多,慢慢来。 :grinning: 我现在基本大部分时间都是在Windows10 上用,还可以。就是Magit稍微慢点,但能接受。多交流 :handshake:

2 个赞

就是那两个 gb18030 起作用的。

org乱应该是文件编码的问题。iconv转一下就行了。

我关于编码的完整设置

(when (fboundp 'set-charset-priority)
  (set-charset-priority 'unicode))

(prefer-coding-system 'utf-8-unix)
(modify-coding-system-alist 'process "*" 'utf-8-unix)
(set-buffer-file-coding-system 'utf-8-unix)
(set-file-name-coding-system 'utf-8-unix)
(set-default-coding-systems 'utf-8-unix)
(set-keyboard-coding-system 'utf-8-unix)
(set-terminal-coding-system 'utf-8-unix)
(set-language-environment "UTF-8")
(setq locale-coding-system 'utf-8-unix)
(setq default-process-coding-system '(utf-8-unix . utf-8-unix))

(when (eq system-type 'windows-nt)
  ; (setq abbreviated-home-dir "\\`'")
  (setq locale-coding-system 'gb18030)
  (setq w32-unicode-filenames 'nil)
  (setq file-name-coding-system 'gb18030)
  (setq default-directory "d:/"))

(unless (eq system-type 'windows-nt)
  (set-clipboard-coding-system 'utf-8)
  (set-selection-coding-system 'utf-8))
为啥都是LF

之前的换行方式都是随系统默认的,Windows上是CRLF,Linux就是LF。但是后来在Windows写C时碰见一个自动转换被坑了一下,见 fread | Microsoft Docs。后来就干脆全部统一LF了。

2 个赞

mark了,不过看doc string 似乎应该是 (set-language-environment “UTF-8”) ?

:see_no_evil: 确实是 “UTF-8” 已经修改了

昨晚因为这个问题搞到很晚才睡觉,也是醉了哈。 因为其他原因,打开了win的beta UTF-8功能,然后发现emacs字体全乱了。 然后添加了LANG=utf-8,字体恢复了。但是开始纠结modeline的乱码。。 最后试了半天无果,还是修改了日期格式到英文 :sweat: 意外的折腾哈

Emacs 对中文确实不友好,好在通过社区各位大神的努力,大部分问题都解决了。