第三章 高級文本處理
1. Java字符編碼
- 字符、ASCII碼
ASCII碼規定:計算機用1字節(1 Byte = 8 bits)存儲常用字符
字符 | ASCII碼 | 二進制表示 |
---|---|---|
回車鍵(打不出來) | 13 | 0000 1101 |
0 | 48 | 0011 0000 |
A | 65 | 0100 0001 |
a | 97 | 0110 0001 |
- 擴展編碼
ASCII碼
采用1Byte,8bits,最多256字符 ~ 不夠用(漢字幾十萬) ~擴展編碼:加字節來擴充編碼
中文編碼:GB18030 > GBK > GB2312
- Unicode編碼(目標是世界通用)
變長方案:UTF-8 UTF-16 UTF-32
UTF-8 ~ 1-4字節 ~ 經濟方便,兼容ASCII,用最廣
UTF-16 ~ 2-4字節
UTF-32 ~ 4字節 - ANSI編碼(Windows默認、非Unicode)
Windows系統語言環境 | ANSI代表 |
---|---|
簡體中文WinOS中 | GBK編碼 |
繁體中文WinOS中 | Big5編碼 |
- 記事本默認ANSI保存
- ANSI不能跨編碼兼容 ~ 首選UTF-8
- Java字符編碼
源文件:采用UTF-8 ~ 寫注釋可以中、英、日
Eclipse: 右鍵.java/項目 ~ 屬性 ~ resourse ~ 選擇UTF-8
程序内部:UTF-16(程序員無法控制)
與外界文本文件:統一用UTF-8(讀/寫采用編碼類型不同會亂碼 )
瞭解Java字符編碼:
CharsetTest.java
TxtReadUTF8.java
TxtWriteUTF8.java
2.Java國際化編程(i18n)
- 一套軟件,多種語言(Property ~ Java X)
- Locale類的方法
getAvailableLocales() ~ 返回所有可用的Locale
getDefault() ~ 返回默認Locale
- 語言文件
Property文件:k-v對
demo:age = 20
命名規則:包名+(語言+國家地區).properties
demo:
message.properties
message_zh.properties
message_zh_CN.properties
.properties文件必須是ASCII文件或者Unicode表示\uxxx
~native2ascii轉碼
(記事本編碼需設爲ANSI)
- ResourceBundle根據k~v查找路徑(優先級往下遞減)
包名_當前Locale語言_當前Locale國家地區_當前Locale變量
(不常用)
包名_當前Locale語言_當前Locale國家地區
包名_當前Locale語言
包名_默認Locale語言_默認Locale國家地區_默認Locale變量
(不常用)
包名_默認Locale語言_默認Locale國家地區
包名_默認Locale語言
包名
3.Java正則表達式(獨立于特定語言)
作用:測試模式/識別替換文本/提取文本
4.其它字符串操作
字符串集合互转
字符串转义
变量名格式化
字符串输入流
*附錄
- 擴展編碼demo
名稱 | 内容 |
---|---|
ISO8859(1-15) | 西歐語言 |
GB2132(1980), GBK(1995) | ASCII+簡體中文 |
GB18030(2000,2005兩個版本) | ASCII+簡體中文 |
Big5 | ASCII+繁體中文 |
Shfit_JIS | ASCII+日本語 |
- 瞭解Java字符編碼demo