为什么我的JavaScript文件在Intellij IDEA中显示格式异常?
问题原因
这个问题本质是文件实际编码和你指定的解析编码不匹配,具体来说是文件为UTF-16 LE(小端)编码,被当成UTF-8解析导致的异常:
- UTF-16编码下,普通的英文字符、符号都会占用2个字节,其中ASCII范围的字符高位字节固定为
0x00 - 当你用UTF-8规则解析的时候,
0x00会被识别为不可见的空字符,最终呈现为每个可见字符之间都有奇怪的占位符或者空格效果
为什么不同编辑器表现不一样
Notepad内置了自动编码探测逻辑,打开文件时会自动识别到UTF-16编码并按对应规则解析,所以显示正常,你误以为文件是UTF-8编码,实际可以在Notepad顶部「编码」菜单里看到当前文件的真实编码是UCS-2 LE/UTF-16 LE,不是UTF-8。
而Intellij默认强制用你设置的UTF-8编码解析文件,没有触发自动探测,就出现了乱码。
解决方法
永久解决(推荐)
在Notepad++打开文件后,点击顶部菜单栏「编码」→「转为UTF-8编码」,保存文件后再到Intellij打开就完全正常了,UTF-8是前端工程的通用编码,兼容性更好。
临时查看
在Intellij打开该文件后,点击右下角的编码选项,手动切换为「UTF-16 LE」即可正常显示内容,不需要修改文件本身。
内容的提问来源于stack exchange,提问作者user13490121
相关产品推荐
相关产品推荐

