idea Transparent-native-to-ascii 是否需要勾选?
首先看一下官方对该选项的解释:

第一段是说标准的Java api是用ISO 8859-1编码.properties文件的,所以如果你在properties文件中可以使用转义序列表示没在这个编码中定义的字符。或者,你可以在项目级别定义properties的默认编码方式,不使用java默认的api编码方式读取properties文件而使用自己定义的编码方式。
第二段是说将那些没有在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,所以对于特殊字符也不会读错
如果勾选了,又使用了写时的编码读取了,特殊字符也不会读错,不管什么编码方式,在读取转义字符时都不会读错,因为使用转义字符可以表示世界上任何一个字符(unicode编码)
总结:
- 一般使用中文值的时候,在读取配置文件时一定要按写入的编码方式读取(一般都是utf8),避免编码问题造成乱码,此时勾不勾选都无所谓
- 如果是团队协作,一个人勾选了,保存了properties文件,别人在获取到这个properties文件时如果自己没有勾选中文都会显示转义编码
\uxxxx(idea没有透明处理)。如果是勾选的人获取到没有勾选的人写的properties文件,显示没有什么问题,之后如果再进行保存的话,后续没有勾选的人获取到还会是\uxxxx。所以如果勾选,团队协作时最好都要勾选。
注意:如果勾选了,在将该文件放在linux系统上的时候,中文都会显示\uxxxx,因为idea帮你透明的处理的转义字符,linux不会,所以为了在linux上保证中文不乱码,我选择不勾选,并且在使用配置文件时,使用指定编码进行读取保证不乱码。
idea Transparent-native-to-ascii 是否需要勾选?的更多相关文章
- native与ascii互转
package org.edujks.schoolapp.schoolbasedresearch.schoolsubject.action; public class DecodeUtil { /** ...
- winform 勾选可以改变框控件
public partial class UCCheck : UserControl { [Browsable(true), Category("修改属性"), Descripti ...
- 解决jquery操作checkbox全选全不选无法勾选问题
最近在学习中使用jquery操作checkbox,使用下面方法进行全选.反选:$("input[name='checkbox']").attr("checked" ...
- 使用递归方法遍历TreeView的节点如配置则勾选
自己在网上找了一段时间都没有找到取自数据库的值与TreeView中的节点值进行对比如匹配则勾选中CheckBox的资料,后面自己写了一个递归方法实现,现在记录起来以备需要时使用.在没写这递归方法前如果 ...
- Unity关于脚本前面的勾选框
今天做项目时需要在某个事件条件下禁用某个脚本,但是突然发现这个脚本前面没有勾选框,,,就像这样 网上搜了下,原来是需要在脚本中加上void Start()方法,即使这个方法里什么都没有 void St ...
- zTree默认勾选指定ID并执行事件
try { var arrs = $('#subjectClassID').val().split(","); var treeObj = $.fn.zTree.getZTreeO ...
- checkbox勾选判断
var xieYi=document.getElementById("xieYi"); if(!xieYi.checked){ alert("请先阅读并勾选购买协议!&q ...
- checkbox属性checked="checked"通过js已设置,但是不勾选
1.通过 attr('checked','checked') 来设置checkbox时,重复点击,虽然checked属性设置正确,但是checkbox没有被勾选 ,如下代码:(代码是全选功能) $(' ...
- Extjs改变树节点的勾选状态
Extjs改变树节点的勾选状态 今天系统中有处地方需要一个功能点击一个按钮后将树节点前的复选框去掉,变成没有选择的状态.网上搜索了半天,然后自己查查API,终于找到解决办法了,下面把方法贴出来. 在E ...
随机推荐
- golang中的标准库IO操作
参考链接 输入输出的底层原理 终端其实是一个文件,相关实例如下: os.Stdin:标准输入的文件实例,类型为*File os.Stdout:标准输出的文件实例,类型为*File os.Stderr: ...
- (转引)数据库索引(MySQL)
数据结构和算法基础 索引的本质:数据结构,帮助高效获取数据 数据库的查询:最基本的查询算法当然是顺序查找(linear search).二分查找(binary search).二叉树查找(binary ...
- 002 Linux 文件与目录命令的必会姿势!
01这些命令真的很重要吗? 文件及目录的路径切换.显示.创建.复制.移动和删除操作的常用姿势,必会!因为这些命令是使用 Linux 系统进行工作的基础,是摆脱小白的第一步,是构建大厦的基石! 发现锅锅 ...
- python 求模运算符--判断奇偶数
#!/usr/bin/python #coding=utf-8 #好好学习,天天向上 number = input("please enter a number:") number ...
- python 单元测试 执行测试
1.在unittest框架中执行测试用例: if __name__ == "__main__": unittest.main() # unittest框架会把以test_开头的实例 ...
- jsp 4-14 知识总结
二 string类型 装换 boolean 的方法? 三 attribute对象 set 和 get 的用法 四 jsp 的四种属性范围? 五 jsp <% %> 和 ...
- plsql 视图中 为什么使用替代触发器
/* 什么是视图? 视图:数据库对象,存的是一个查询命令:当作一个虚拟的数据表来使用: 应用场景: 简化查询操作:不能直接在视图上进行create,insert,update操作: 创建视图? 需要管 ...
- 别人都在认真听课,而我埋头写Python为主播疯狂点点点点点赞!
最近有次在钉钉看直播,发现这个直播非常之精彩,于是情不自禁地想要为主播大佬连刷一波赞: 但我发现,手动连击点赞速度十分不可观.气人的是,钉钉直播不能长按刷赞!这让我很恼怒.心中满怀的激动和兴奋以及对大 ...
- List去重复
HashSet hs = new HashSet(li1); //此时已经去掉重复的数据保存在hashset中 HashSet不能给cbx.datasource赋值,要转成list再赋值 List t ...
- [论文][半监督语义分割]Semi-Supervised Semantic Segmentation with High- and Low-level Consistency
Semi-Supervised Semantic Segmentation with High- and Low-level Consistency TPAMI 2019 论文原文 code 创新点: ...