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)

大家都在看

  • kfence源码分析【转】

    转自:https://www.cnblogs.com/pengdonglin137/p/16342898.html 参考 Linux mem 2.8 Kfence 详解 Linux…

    技术杂谈 2023年5月30日
    075
  • binary与进制转换

    规律数: 0111为4位补码的最大值,规律是1个0和3个1,可以推导出 32位补码的最大值:1个0和31个1——(011111111111111111111…

    技术杂谈 2023年7月10日
    047
  • 万物智能互联时代

    万物智能互联时代始于人,是人、物、数据和过程的链接,通过数十亿个传感器被植入到不同的设备、机器和普通物体中,他们相互结合成一个共同的相关联的系统,通过互联网、应用程序、硬件设备连接…

    技术杂谈 2023年6月1日
    076
  • Linux查看日志文件写入速度的4种方法

    原创:扣钉日记(微信公众号ID:codelogs),欢迎分享,转载请保留出处。 简介 有时,我们需要查看某个文件的增长速度,如日志文件,以此来感受系统的负载情况,因为一般情况下,日…

    技术杂谈 2023年7月24日
    073
  • 继承与初始化

    了解包括继承在内的初始化全过程: 执行结果: 程序运行时,先试图访问Beetle.main()(一个static方法),访问Beetle类的静态方法将会使Beetle类加载,即加载…

    技术杂谈 2023年7月23日
    052
  • Python 函数相关知识

    Python 匿名函数:lambda匿名函数:也叫一句话函数,一行构建一个函数,比较简单的函数。 *语法:函数名 = lambda 参数 : 返回值​ 1.此函数不是没有名字,他是…

    技术杂谈 2023年6月21日
    080
  • LRU算法简单实现

    LRU:最近最少使用缓存 LRU是Least Recently Used的缩写,即最近最少使用,是一种常用的页面置换算法,选择最近最久未使用的页面予以淘汰。该算法赋予每个页面一个访…

    技术杂谈 2023年6月21日
    0102
  • 快速排序–单边循环法

    递归的精髓在于放弃!放弃你对于理解和跟踪递归全程的企图,只理解递归两层之间的交接,以及递归终结的条件。 快速排序和冒泡排序一样,也属于交换排序.和冒泡排序不同的是,快速排序在每一轮…

    技术杂谈 2023年6月1日
    092
  • Linux学习笔记(一)初识Linux

    初始Linux Linux可划分为以下四部分: Linux内核 GNU工具 图形化桌面环境 应用软件 每一部分在Linux系统中各司其职,下图是各部分对应关系: 1、Linux内核…

    技术杂谈 2023年7月11日
    067
  • TCP/IP 网络编程 (三)

    server端未处理高并发请求通常採用例如以下方式: 多进程:通过创建多个进程提供服务 多路复用:通过捆绑并统一管理 I/O 对象提供服务 多线程:通过生成和客户端等量的线程提供服…

    技术杂谈 2023年5月31日
    067
  • php中的替换

    首先修改PHP.ini文件. 如下:1. 将short_open_tag = Off 改成On开启以后可以使用PHP的短标签:来代替同时,只有开启这个才可以使用 2. 将 asp_…

    技术杂谈 2023年5月31日
    0115
  • Deepin 15.4 个性化设置

    Chrome 版本 60.0.3112.78(正式版本) (64 位) 1、开启 ls 别名: cnblogs_Highlighterbash; vim .bashrc</p…

    技术杂谈 2023年5月30日
    058
  • 初识C++01:初探C++

    c++介绍 c++支持面向过程编程(如c),面向对象编程(OOP)和泛型编程; c/c++编译器比较多,window下是微软编译器cl.exe,Linux机下是GCC编译器,mac…

    技术杂谈 2023年7月25日
    062
  • docker的相关命令

    docker的相关命令 1.安装docker: (1)yum -y install docker ​ sudo sh get-docker.sh 2.从远程拉取应用的镜像源: do…

    技术杂谈 2023年7月24日
    058
  • 计算图像数据集的均值和方差(mean, std)用于transforms.Normalize()标准化

    Pytorch图像预处理时,通常使用transforms.Normalize(mean, std)对图像按通道进行标准化,即减去均值,再除以方差。这样做可以加快模型的收敛速度。其中…

    技术杂谈 2023年5月31日
    064
  • elasticsearch通用工具类

    这几天写了一个关于es的工具类,主要封装了业务中常用es的常用方法。 本文中使用到的elasticsearch版本6.7,但实际上也支持es7.x以上版本,因为主要是对spring…

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