g++默认字符集utf-8_Java可能使用UTF-8作为其默认字符集

g++默认字符集utf-8

由于基于Java的应用程序通常用于各种各样的操作系统和环境中,因此Java开发人员会遇到与基于字符的输入和输出有关的问题并不少见。 涉及这些问题的博客文章包括《警察的恐怖:默认语言环境,默认字符集和默认时区》 ; 注释JDK默认数据 ; 编码问题:适用于linux和Java应用程序的解决方案 ; 愚蠢的Java字符串 ; Java:字符编码的粗略指南 ; 这个帖子标题太长了,不能在这里列出 。

多年来,对Java进行了一些增强,以减少这些问题,但是当隐式使用默认字符集时,有时仍然存在一些问题。 《 Java Puzzlers 》一书的一个难题(难题18)描述了与Java中“默认字符集的变量”有关的古怪之处。

由于所有这些与Java的默认字符集有关的问题,欢迎 JEP 草案 “ 使用UTF-8作为默认字符集 ”( JDK-8187041 )出现。 除了潜在地解决与默认字符集有关的问题外,该JEP还提供了有关这些问题是什么的很好的概述以及解决这些问题的替代方案。 JEP的“动机”部分目前总结了该JEP为何重要的原因:“使用默认字符集的API对Java平台的新开发人员来说是一种危害”,“对于经验丰富的开发人员来说,也是一个麻烦。”

“默认”字符集的问题由于使用不同的字符集以及JDK API中当前可用的不同方法(导致多个“默认”)而变得更加复杂。 这是要考虑的问题的细分。

  • 描述文件内容字符集的“默认”字符集可能与描述文件路径字符集的“默认”字符集不同。
    • Java系统属性file.encoding指定文件内容的默认字符集,其设置是java.nio.charsets.Charset.defaultCharset()返回的值。
  • 与用于读取/写入文件内容的字符集有关的“默认”有两种类型。
    • 某些JDK方法不允许指定字符集,并且始终仅针对该特定方法且不考虑任何语言环境或系统配置,都采用UTF-8的“默认”字符集。

JEP 草案 “ 使用UTF-8作为默认字符集 ”将有助于解决与默认用于读取和写入文件内容的字符集有关的不同类型“默认”的问题。 例如,它将消除使用平台默认方法写入文件并从始终使用UTF-8的方法读取文件(无论平台默认字符集如何)时可能引起的潜在冲突。 当然,如果平台默认值不是NOT UTF-8,那么这只是在特定情况下的问题。

以下Java代码是一个简单的类,可打印出一些与字符集相关的设置。

显示默认字符集详细信息

package dustin.examples.charset;import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.nio.charset.Charset;
import java.util.Locale;import static java.lang.System.out;/*** Demonstrate default Charset-related details.*/
public class CharsetDemo
{/*** Supplies the default encoding without using Charset.defaultCharset()* and without accessing System.getProperty("file.encoding").** @return Default encoding (default charset).*/public static String getEncoding(){final byte [] bytes = {'D'};final InputStream inputStream = new ByteArrayInputStream(bytes);final InputStreamReader reader = new InputStreamReader(inputStream);final String encoding = reader.getEncoding();return encoding;}public static void main(final String[] arguments){out.println("Default Locale:   " + Locale.getDefault());out.println("Default Charset:  " + Charset.defaultCharset());out.println("file.encoding;    " + System.getProperty("file.encoding"));out.println("sun.jnu.encoding: " + System.getProperty("sun.jnu.encoding"));out.println("Default Encoding: " + getEncoding());}
}

下一个屏幕快照显示了在基于Windows 10的笔记本电脑上运行此简单类的结果,而未明确指定任何与字符集相关的系统属性,仅指定了file.encoding系统属性,并指定了两个系统属性file.encodingsun.jnu.encoding

刚刚显示的图像演示了通过属性控制默认字符集的能力。 它还说明,对于具有en_US 区域设置的Windows环境,文件内容和文件路径的默认字符集均为Windows-1252 ( Cp1252 )。 如果实现了本文中讨论的JEP草案 ,则即使对于Windows,文件内容的默认字符集也将更改为UTF-8。

当默认字符集更改为UTF-8时,在某些应用程序中可能会造成重大破坏。 JEP草案讨论了减轻此风险的方法,其中包括通过预先将系统属性file.encoding预先设置为UTF-8来早期测试应用程序对更改的敏感性。 对于需要保留当前行为的情况(使用系统确定的默认字符集而不是始终使用UTF-8),JEP草案的当前版本建议支持指定-Dfile.encoding=SYSTEM

JEP当前处于草稿中,并且与任何特定的JDK版本都不相关。 但是,根据JDK邮件列表上的最新帖子 ,我很乐观地认为,在不久的将来,我们会将UTF-8视为JDK未来版本中的默认字符集。

翻译自: https://www.javacodegeeks.com/2018/02/java-may-use-utf-8-default-charset.html

g++默认字符集utf-8

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/333855.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux 的权限表达式

文章目录一、采用权限字母和操作符表达式(一)授权对象(二)权限字母符号二、采用权限数字表达式(一)权限数字(二)权限组合(三)命令 chmod 后面的数字含义一、采…

nat 网卡间数据包转发_nat端口转发示例

nat端口转发示例环境:A服务器: 网卡1:192.168.1.151 网卡2:10.10.69.10B服务器: 网卡1:10.10.69.41要求:访问192.168.1.151:1521 即访问 10.10.69.41:1521启用端口转发:echo 1 > /proc/sys/net/ipv4/ip_forward清空…

精通 RPM 之查询篇

文章目录一、命令格式二、选项详解(一)查询所有已安装的软件包(二)查询有哪些软件包属于指定的类别(三)查询有哪些软件包拥有指定文件(四)查询有哪些包需要指定功能(五&a…

如何判断2服务器性能好或坏_无服务器革命:好,坏和丑

如何判断2服务器性能好或坏“这是愚蠢的。 比愚蠢还糟:这是一场营销炒作。” ‐ 理查德斯托曼 ( Richard Stallman)对云计算的评论,2008年9月 而且,十年后,当有人提到这个词时,您开始三思而后…

datax 持续数据同步_采用DataX实现多表增量数据同步

这两天验证了一下阿里的DataX数据同步工具,觉得DataX可以用来做管理数据的多级数据同步。DataX用来做批量数据迁移很适合,能够保证数据的一致性,性能也很好,结合时间戳字段,用来实现数据定时增量同步也是可以的&#x…

Linux RPM包校验和数字证书

文章目录一、Linux RPM 包校验二、Linux RPM 数字证书验证(一)使用数字证书验证 RPM 包的步骤(二)安装/卸载数字证书为了能够及时发现文件误删、误修改文件数据、恶意篡改文件内容等问题,Linux 提供了以下两种检测方式…

java 字符串文字筛选_Java的原始字符串文字

java 字符串文字筛选似乎“ 原始字符串文字 ”即将出现在Java中。 JEP 326开始的(“原始字符串字面量”) 发行JDK-8196004 ,并宣布为“新JEP候选人” 3月2日的JEP和相关问题的人指出,“Java的仍然是一小群现代编程语言中的一个不为…

计算机系统常识笔记

计算机系统常识操作系统篇LinuxWindowsAndroidIOSUNIXGNU(GNUs Not Unix!)MacOSDOS处理器(CPU)篇x86ARM处理器显卡(GPU)篇分类性能指标显示存储器显卡频率显存类型流处理器单元显存位宽总线接口类型按当前主流显卡等级划分编译器篇公司篇IntelAMDNVIDIAMicrosoft(微软)IBMOracl…

jsr303jsp页面怎么显示错误信息_springmvc使用JSR-303进行数据校验实例

项目中,通常使用较多的是前端的校验,比如页面中js校验以及form表单使用bootstrap校验。然而对于安全要求较高点建议在服务端进行校验。服务端校验:控制层controller:校验页面请求的参数的合法性。在服务端控制层controller校验&am…

spring @lazy_Spring @Lazy批注用例

spring lazySpring框架几乎可以毫不费力地为您解决许多常见的编程问题,但是其某些功能比其他功能鲜为人知。 在本文中,我们将仔细研究属于该组的Lazy批注。 阅读了几个示例之后,您应该能够将注释应用于日常开发任务。 1. 懒豆初始化 Spring的…

什么是虚数

在数学中,虚数就是形如 ab*i 的数,其中 a、b 是实数,且 b≠0,i -1。虚数这个名词是 17 世纪著名数学家笛卡尔创立,因为当时的观念认为这是真实不存在的数字。后来发现虚数 ab*i 的实部 a 可对应平面上的横轴&#xff…

计算机网络--接入互联网方式

接入网 指将端系统物理连接到其边缘路由器的网络。边缘路由器是端系统到任何其他远程端系统的路径上的第一台路由器。 1.家庭接入互联网方式 一般通过DSL、电缆、FTTH、拨号和卫星接入。 数字用户线(DSL) 住户通常从提供本地电话接入的本地电话公司处获得DSL因特网接入。因…

mysqls压力测试怎么用_MySQL压力测试工具使用

一、MySQL自带的压力测试工具——Mysqlslapmysqlslap是mysql自带的基准测试工具,该工具查询数据,语法简单,灵活容易使用.该工具可以模拟多个客户端同时并发的向服务器发出查询更新,给出了性能测试数据而且提供了多种引擎的性能比较。mysqlslap为mysql性能优化前后提供了直观的验…

java isempty_Optional.isEmpty()即将加入Java吗?

java isemptyJDK-8184693请求将方法isEmpty()添加到JDK 8引入的Optional类中。 调用Optional.isEmpty()等同于调用! Optional.isPresent() ! Optional.isPresent() 。 当前没有与JDK-8184693关联的JDK版本 ,但是它正在积极地工作,如最近发布的名为“ RFR…

如何理解文件存取单位 -- 块(block)

文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector)。每个扇区储存512字节(相当于0.5KB)。 操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性…

知识图谱笔记

知识图谱知识分类陈述性知识过程性知识本体(Ontology)知识库(Knowledge Base)数据库(Database)语义网知识图谱详细解析知识图谱的生命周期知识建模(知识体系构建)知识获取知识融合(知识集成)知识存储、查询和推理(知识服务)知识推理知识应用领域知识图谱的应用金融证券领域医疗…

nslookup 包含在那个包中_nslookup命令详解

Nslookup 是一个监测网络中DNS服务器是否能正确实现域名解析的命令行工具。它在 Windows NT/2000/XP(在之后的windows系统也都可以用的,比如win7,win8等) 中均可使用,但在Windows 98中却没有集成这一个工具。Nslookup 必须要安装了TCP/IP 协议的网络环境之后才能使用…

java ee 8 api_Java EE 8安全性API:概述

java ee 8 api新的安全性API Java EE 8中添加的最重要的一项新功能可能就是新的安全性API。 此新API的主要动机是简化,标准化和现代化跨容器和实现处理安全性问题的方式。 他们做得很好。 由于三个新的注释使web.xml文件声明多余,Web身份验证的配置已实…

Linux 命令之 ln -- 为文件创建链接

文章目录一、命令介绍(一)符号链接的特点(二)硬链接的特点二、命令格式三、常用选项四、命令示例(一)创建硬链接(二)创建软链接一、命令介绍 Linux 具有为一个文件起多个名字的功能…

计算机网络笔记----概述

参考计算机网络自顶向下第七版和计算机网络谢希仁第七版计算机网络和Internet什么是互联网?具体构成描述互联网服务提供商(ISP)服务描述什么是协议?协议分层应用层(最高层)传输层(运输层)网络层:数据链路层和局域网物理层网络边缘接入网家庭接…