国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - Java教程 - java 中file.encoding的設(shè)置詳解

java 中file.encoding的設(shè)置詳解

2020-09-11 10:25Java教程網(wǎng) Java教程

這篇文章主要介紹了java 中file.encoding的設(shè)置詳解的相關(guān)資料,需要的朋友可以參考下

java 中file.encoding的設(shè)置詳解

昨天有人在討論關(guān)于設(shè)置System的property,file.encoding 修改defaultcharset無效

?
1
2
Properties pps=System.getProperties();
pps.setProperty("file.encoding","ISO-8859-1");

在java中,如果沒有指定charset的時(shí)候,比如new String(byte[] bytes),都會(huì)調(diào)用Charset.defaultCharset()的方法

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public static Charset defaultCharset() {
    if (defaultCharset == null) {
    synchronized (Charset.class) {
    java.security.PrivilegedAction pa =
      new GetPropertyAction("file.encoding");
    String csn = (String)AccessController.doPrivileged(pa);
    Charset cs = lookup(csn);
    if (cs != null)
      defaultCharset = cs;
        else
      defaultCharset = forName("UTF-8");
      }
  }
  return defaultCharset;
  }

我們可以清楚的看到defaultCharset是只能被初始化一次,這里還是有點(diǎn)小問題的,在多線程并發(fā)調(diào)用的時(shí)候還是會(huì)初始話多次,當(dāng)然后面都是從cache(lookup的函數(shù))里讀出來的,問題也不大。

當(dāng)我們?cè)诟淖僑ystem.getProperties里的file.encoding 的時(shí)候,defaultCharset已經(jīng)被初始化過了,所以不會(huì)在調(diào)用初始話的代碼。

當(dāng)jvm 啟動(dòng)的時(shí)候,load class, 最后調(diào)用main函數(shù)之前,defaultCharset已經(jīng)初始化好,而很多函數(shù)里都掉用了這個(gè)方法象String.getBytes, 還有 InputStreamReader, InputStreamWriter 都是調(diào)用了 Charset.defaultCharset()的方法,就不去追查誰(shuí)先調(diào)用了defaultCharset。

對(duì)defaultCharset,在jvm里的語(yǔ)言就是初始話在啟動(dòng)的時(shí)候,而且不可被更改,你只能修改系統(tǒng)的charset,或者jvm的啟動(dòng)參數(shù)里加上 -Dfile.encoding="UTF-8"

題外話

在Java里面String是使用char數(shù)組來表示,而java的char和c的char是不同的,java的char是雙字節(jié)的, 而c 里面的char單字節(jié),等同于Java byte

也就是說我們?cè)谵D(zhuǎn)化byte 到string的時(shí)候,是根據(jù)charset decode轉(zhuǎn)化成char, 而我們?cè)谡{(diào)用println,write string的時(shí)候,還是要把char最后encode成byte 輸出到控制臺(tái),或者文件中。

而在最后調(diào)用c函數(shù)write 的時(shí)候,如果是java 的byte數(shù)組,還要轉(zhuǎn)化成c 里的char數(shù)組

?
1
(*env)->GetByteArrayRegion(env, bytes, off, len, (jbyte *)buf);

感謝閱讀,希望能幫助到大家,謝謝大家,對(duì)本站的支持!

原文鏈接:http://blog.csdn.net/raintungli/article/details/6651076

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产视频久久 | 久草成人 | 在线视频一区二区 | 在线中文| 精品亚洲一区二区 | 韩国精品一区二区三区 | 欧美一区二区免费 | 夜夜福利| 国产色视频在线播放 | 精品久久久久久久 | 久久国产精品一区 | 黄色av免费在线看 | 青青草国产精品 | 91精品日韩 | 亚洲第一视频网站 | 激情国产视频 | 99热激情| 一级毛片免费网站 | 欧美日韩专区 | 亚洲一区中文字幕 | 日本一区二区在线观看视频 | 国产一区视频网站 | 久久av网站 | 成人永久免费视频 | 亚洲国产中文字幕在线 | 久久久人成影片一区二区三区 | 国产婷婷精品av在线 | 老妇60一区二区三区 | 国产综合在线播放 | 一区二区三区在线看 | 自拍偷拍 亚洲 欧美 | 国产一区二区三区久久久久久久久 | 91污视频 | 日韩欧美视频 | 成人精品一区二区三区 | 欧美浮力 | 91黄色片视频 | 亚洲免费精品 | 亚洲一区二区精品在线观看 | 中文字幕一级毛片 | 99视频在线免费观看 |