idea Transparent-native-to-ascii 是否需要勾选?

首先看一下官方对该选项的解释:

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上保证中文不乱码,我选择不勾选,并且在使用配置文件时,使用指定编码进行读取保证不乱码。

Original: https://www.cnblogs.com/bingmous/p/15957279.html
Author: Bingmous
Title: idea Transparent-native-to-ascii 是否需要勾选?

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/684112/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • lamba: lamba变量申明

    1,下面编译运行没问题 2,如果想在lamba中引用外围变量x,是无法做到的,如下会报错,类型不匹配了 error C2440: “初始化”: 无法从&#8…

    技术杂谈 2023年5月31日
    069
  • 彻底学会Selenium元素定位

    转载请注明出处❤️ 作者:测试蔡坨坨 原文链接:caituotuo.top/63099961.html 你好,我是测试蔡坨坨。 最近收到不少初学UI自动化测试的小伙伴私信,对于元素…

    技术杂谈 2023年7月11日
    099
  • .NET6打包部署到WindowsService

    1.安装Nuget包 安装以下nuget包支持windows service <PackageReference Include="Microsoft.AspNet…

    技术杂谈 2023年7月24日
    097
  • Vue组件介绍

    #基本示例 Vue组件的定义: component (组件)中的data ,必须是个函数,这是因为 组件是需要复用的,每次的复用,都相当于创建了一个新的实例. 这种情况跟 类(ja…

    技术杂谈 2023年7月11日
    076
  • 图解|用好MySQL索引,你需要知道的一些事情

    我是蝉沐风。 这一篇文章来聊一聊如何用好MySQL索引。 为了更好地进行解释,我创建了一个存储引擎为InnoDB的表 user_innodb,并批量初始化了500W+条数据。包含主…

    技术杂谈 2023年7月23日
    085
  • Verilog的基本语法

    1.标识符 标识符:模块名、变量名、常量名 Verilog是大小写敏感的(a和A是不同的)标识符:任意一组字母、数字、$、_的组合标识符的第一个字母必须是字母或下划线书写标识符时应…

    技术杂谈 2023年6月1日
    080
  • Mysql异地多活数据双向同步-CloudCanal实战

    异地多活是一项系统性工作,包含 web 层、应用服务层、数据层的流量分配和同步。 数据层的双向同步是整个方案基础,CloudCanal 在 MySQL 技术点 双向同步中, 暂时无…

    技术杂谈 2023年7月24日
    071
  • MySQL性能优化的5个维度

    面试官如果问你:你会从哪些维度进行MySQL性能优化?你会怎么回答? 所谓的性能优化,一般针对的是MySQL查询的优化。既然是优化查询,我们自然要先知道查询操作要经过哪些环节,然后…

    技术杂谈 2023年7月24日
    069
  • 6、Swift协程详解:属性隔离和Actor

    Task 的取消就是个状态 Task 的取消其实非常简单,就是将 Task 标记为取消状态。那 Task 的执行体要怎么做才能让任务真正取消呢?我们先看个简单的例子: 我们创建了一…

    技术杂谈 2023年6月1日
    071
  • [AI]-模型测试和评价指标

    模型测试 import cv2 from torchvision import transforms, datasets, models from torch.utils.data…

    技术杂谈 2023年7月10日
    070
  • 二十一、XML

    二十一、XML 21.1 XML介绍 21.1.1 一个问题引入 XML 思考:前面的反射可以加载配置文件里的信息,获取类的字节码对象从而动态创建对象和调用方法,但是如果需要创建多…

    技术杂谈 2023年7月11日
    077
  • C/C++预处理运算符

    有三种运算符只能用在预处理指令中,它们是字符串化运算符#,粘贴运算符##和字符化运算符#@。 字符串化运算符#在宏参数的前面放一个#会使编译器在展开宏时插入参数的名字而不是它的值。…

    技术杂谈 2023年7月24日
    0103
  • Maven中pom.xml的packaging类型

    项目的打包类型:pom、jar、war 项目中一般使用maven进行模块管理,每个模块下对应都有一个pom文件,pom文件中维护了各模块之间的依赖和继承关系。项目模块化可以将通用的…

    技术杂谈 2023年6月1日
    098
  • hdu5299 Circles Game

    Problem Description There are n circles on a infinitely large table.With every two circle,…

    技术杂谈 2023年5月31日
    072
  • Java — 枚举

    枚举是 JDK5 中引入的特性,由 enum 关键字来定义一个枚举类。 格式: enum 枚举类名 { 枚举项1, 枚举项2, …; 成员变量; 构造方法 成员方法 } 说明:…

    技术杂谈 2023年7月11日
    079
  • 深度学习—人工智能的第三次热潮

    深度学习的历史趋势 迄今为止深度学习已经经历了3次发展浪潮: 20世纪40年代到60年代,深度学习的雏形出现在控制论(cybernetics)中; 20世纪80年代到90年代,深度…

    技术杂谈 2023年7月23日
    082
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球