idea|idea Transparent-native-to-ascii 是否需要勾选()
目录
首先看一下官方对该选项的解释:
文章图片
第一段是说标准的Java api是用
ISO 8859-1
编码.properties
文件的,所以如果你在properties文件中可以使用转义序列表示没在这个编码中定义的字符。或者,你可以在项目级别定义properties的默认编码方式,不使用java默认的api编码方式读取properties文件而使用自己定义的编码方式。【idea|idea Transparent-native-to-ascii 是否需要勾选()】第二段是说将那些没有在
ISO 8859-1
中定义的字符使用转义字符替代。(透明的将本地字符转换成ascii码进转义)首先需要了解的是,将文件保存到磁盘需要
编码
过程,将文件读取到程序中需要解码
过程,假设我们使用utf-8格式保存文件,如果不勾选Transparent-native-to-ascii
,表示自己的properties文件中的一些特殊字符(比如中文,a=中文)在被java api默认的方式加载时(properties.load(fis)),可能会乱码,因为默认是使用ISO 8859-1
解码,该编码方式是无法解码中文的。此时有两种解决方案,可以保证自己获取到的属性值不是乱码:- 勾选
Transparent-native-to-ascii
,idea会默认将输入的特殊字符进行转义,每个特殊字符都是用\uxxxx
表示,此时再被ISO 8859-1
读取时就会通过转义获取到字符真正的含义,虽然被转义了,但是我们在idea里面看到的还是我们认识的字符而不是\uxxxx
,这是idea自动完成的工作(即transparent 对用户透明) - 继续不勾选,在加载properties文件时,使用自己定义的编码方式加载,比如utf-8,此时java api可以这样写
properties.load(new FileReader("gbk.properties", StandardCharsets.UTF_8))
,此时idea没有对特殊字符进行转义,但是自己读取的时候指定了和编码的时候同样的编码方式utf-8,所以对于特殊字符也不会读错
总结:
- 一般使用中文值的时候,在读取配置文件时一定要按写入的编码方式读取(一般都是utf8),避免编码问题造成乱码,此时勾不勾选都无所谓
- 如果是团队协作,一个人勾选了,保存了properties文件,别人在获取到这个properties文件时如果自己没有勾选中文都会显示转义编码
\uxxxx
(idea没有透明处理)。如果是勾选的人获取到没有勾选的人写的properties文件,显示没有什么问题,之后如果再进行保存的话,后续没有勾选的人获取到还会是\uxxxx
。所以如果勾选,团队协作时最好都要勾选。
\uxxxx
,因为idea帮你透明的处理的转义字符,linux不会,所以为了在linux上保证中文不乱码,我选择不勾选,并且在使用配置文件时,使用指定编码进行读取保证不乱码。推荐阅读
- idea使用Mybatis逆向工程插件详情
- IDEA入门手册
- Pycharm和IntelliJ IDEA 快捷键相互引用对比
- IDEA高效查看源码的快捷键及小技巧
- 解决idea无法导入识别本地类的问题
- IDEA 中如何完成 Git 版本回退()
- 命令行下Git调用IDEA的diff功能
- Java|idea 设置导航栏显示前进和后退返回键
- idea|idea前进和后退按钮如何显示
- git|基于IDEA的Git撤销本地修改和前进后退选择提交版本