当前位置: 首页 > news >正文

java set encoding file_系统变量file.encoding对Java的运行影响有多大?(转)good

这个话题来自: Nutz的issue 361

在考虑这个issue时, 我一直倾向于使用系统变量file.encoding来改变JVM的默认编码.

今天,我想到, 这个系统变量,对JVM的影响到底有多大呢? 我使用最简单的方法看看这个变量的影响--在JDK 1.6.0_20的src.zip文件中,查找包含file.encoding字眼的文件. 共找到4个, 分别是: 先上重头戏 java.nio.Charset类:

publicstaticCharsetdefaultCharset(){if(defaultCharset ==null){synchronized(Charset.class){java.security.PrivilegedActionpa =newGetPropertyAction("file.encoding");Stringcsn =(String)AccessController.doPrivileged(pa);Charsetcs =lookup(csn);if(cs !=null)defaultCharset =cs;elsedefaultCharset =forName("UTF-8");}}returndefaultCharset;}

java.net.URLEncoder的静态构造方法,影响到的方法 java.net.URLEncoder.encode(String)

static{dontNeedEncoding =newBitSet(256);inti;for(i ='a';i <='z';i++){dontNeedEncoding.set(i);}for(i ='A';i <='Z';i++){dontNeedEncoding.set(i);}for(i ='0';i <='9';i++){dontNeedEncoding.set(i);}dontNeedEncoding.set(' ');/* encoding a space to a + is done

* in the encode() method */dontNeedEncoding.set('-');dontNeedEncoding.set('_');dontNeedEncoding.set('.');dontNeedEncoding.set('*');dfltEncName =(String)AccessController.doPrivileged (newGetPropertyAction("file.encoding"));}

com.sun.org.apache.xml.internal.serializer.Encoding的getMimeEncoding方法(209行起)

staticStringgetMimeEncoding(Stringencoding){if(null==encoding){try{// Get the default system character encoding. This may be// incorrect if they passed in a writer, but right now there// seems to be no way to get the encoding from a writer.encoding =System.getProperty("file.encoding","UTF8");if(null!=encoding){/*

* See if the mime type is equal to UTF8. If you don't

* do that, then convertJava2MimeEncoding will convert

* 8859_1 to "ISO-8859-1", which is not what we want,

* I think, and I don't think I want to alter the tables

* to convert everything to UTF-8.

*/Stringjencoding =(encoding.equalsIgnoreCase("Cp1252")||encoding.equalsIgnoreCase("ISO8859_1")||encoding.equalsIgnoreCase("8859_1")||encoding.equalsIgnoreCase("UTF8"))?DEFAULT_MIME_ENCODING

:convertJava2MimeEncoding(encoding);encoding =(null!=jencoding)?jencoding :DEFAULT_MIME_ENCODING;}else{encoding =DEFAULT_MIME_ENCODING;}}catch(SecurityExceptionse){encoding =DEFAULT_MIME_ENCODING;}}

最后一个javax.print.DocFlavor类的静态构造方法:

static{hostEncoding =(String)java.security.AccessController.doPrivileged(newsun.security.action.GetPropertyAction("file.encoding"));}

可以看到,系统变量file.encoding影响到

1. Charset.defaultCharset() Java环境中最关键的编码设置

2. URLEncoder.encode(String) Web环境中最常遇到的编码使用

3. com.sun.org.apache.xml.internal.serializer.Encoding 影响对无编码设置的xml文件的读取

4. javax.print.DocFlavor 影响打印的编码

故,影响还是很大的哦, 可以说是Java中编码的一个关键钥匙!

http://wendal.net/232.html

相关文章:

  • java运行一段时间变慢_tomcat 运行程序很慢 运行一段时间就报错: java.lang.OutOfMemoryError: PermGen space...
  • java的开发人员数量_Java开发人员最容易出现的几类错误
  • 字符串加减转数字java_剑指Offer解题报告(Java版)——字符串转换为数字 49
  • Java txt 下拉刷新_「小程序JAVA实战」小程序页面的上拉下拉刷新(50)
  • Java语言西安交大高起专_2018年西安交大网络学院高起专/本英语入学考试复习题...
  • php 生成不了zip文件怎么打开吗,PHP生成压缩包,不带根目录 | 学步园
  • php变量持有对象的引用,我对PHP变量引用、对象引用的理解
  • php 自动填写表单,PHP自动生成表单代码分享
  • 记事本底部的java切换,如何使用java操作记事本(转)
  • php类调用类外变量吗,如何调用类外的变量
  • matlab中单相整流器,一种新型单相脉冲整流器的MATLAB仿真研究
  • matlab中支持向量机网格,MATLAB中SVM(支持向量机)的用法
  • mysql出现帮助,MySQL之帮助的使用
  • 不会matlab下载,下载的用MATLAB实现的DTW算法,不会用,跪求大神帮忙
  • mysql序列号重置,当我们更改小于当前序列号的AUTO_INCREMENT值时,MySQL将返回什么?...
  • CentOS6 编译安装 redis-3.2.3
  • httpie使用详解
  • js对象的深浅拷贝
  • Logstash 参考指南(目录)
  • Mac转Windows的拯救指南
  • Markdown 语法简单说明
  • Python代码面试必读 - Data Structures and Algorithms in Python
  • Python利用正则抓取网页内容保存到本地
  • Redis中的lru算法实现
  • Shell编程
  • Three.js 再探 - 写一个跳一跳极简版游戏
  • Traffic-Sign Detection and Classification in the Wild 论文笔记
  • 给自己的博客网站加上酷炫的初音未来音乐游戏?
  • 构建二叉树进行数值数组的去重及优化
  • 基于web的全景—— Pannellum小试
  • 使用parted解决大于2T的磁盘分区
  • 算法之不定期更新(一)(2018-04-12)
  • 小程序上传图片到七牛云(支持多张上传,预览,删除)
  • scrapy中间件源码分析及常用中间件大全
  • 阿里云服务器购买完整流程
  • ​ 无限可能性的探索:Amazon Lightsail轻量应用服务器引领数字化时代创新发展
  • ​secrets --- 生成管理密码的安全随机数​
  • ​第20课 在Android Native开发中加入新的C++类
  • $(document).ready(function(){}), $().ready(function(){})和$(function(){})三者区别
  • $.ajax()
  • $emit传递多个参数_PPC和MIPS指令集下二进制代码中函数参数个数的识别方法
  • (0)Nginx 功能特性
  • (01)ORB-SLAM2源码无死角解析-(56) 闭环线程→计算Sim3:理论推导(1)求解s,t
  • (Mac上)使用Python进行matplotlib 画图时,中文显示不出来
  • (六)软件测试分工
  • (未解决)macOS matplotlib 中文是方框
  • (心得)获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列。
  • (学习日记)2024.03.12:UCOSIII第十四节:时基列表
  • * 论文笔记 【Wide Deep Learning for Recommender Systems】
  • ./include/caffe/util/cudnn.hpp: In function ‘const char* cudnnGetErrorString(cudnnStatus_t)’: ./incl
  • .NET MVC之AOP
  • .NET企业级应用架构设计系列之开场白
  • .sdf和.msp文件读取
  • [ 攻防演练演示篇 ] 利用通达OA 文件上传漏洞上传webshell获取主机权限
  • []T 还是 []*T, 这是一个问题