Package com.luna.common.text
Class CharsetUtil
java.lang.Object
com.luna.common.text.CharsetUtil
字符集工具类
- Author:
- luna
-
Field Summary
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionstatic byte[]
bytes
(CharSequence str, Charset charset) 编码字符串static Charset
转换为Charset对象static String
cleanBlank
(CharSequence str) 清理空白字符static File
转换文件编码
此方法用于转换文件编码,读取的文件实际编码必须与指定的srcCharset编码一致,否则导致乱码static String
转换字符串的字符集编码static String
转换字符串的字符集编码
当以错误的编码读取为字符串时,打印字符串将出现乱码。
此方法用于纠正因读取使用编码错误导致的乱码问题。
例如,在Servlet请求中客户端用GBK编码了请求参数,我们使用UTF-8读取到的是乱码,此时,使用此方法即可还原原编码的内容static Charset
系统默认字符集编码static String
系统默认字符集编码static int
digit16
(int b) 获取给定字符的16进制数值static boolean
equals
(char c1, char c2, boolean caseInsensitive) 比较两个字符是否相同static String
filter
(CharSequence str, Filter<Character> filter) 过滤字符串static int
getType
(int c) 获取字符类型static boolean
isAscii
(char ch) 是否为ASCII字符,ASCII字符位于0~127之间static boolean
isAsciiControl
(char ch) 是否为ASCII控制符(不可见字符),控制符位于0~31和127static boolean
isAsciiPrintable
(char ch) 是否为可见ASCII字符,可见字符位于32~126之间static boolean
isBlankChar
(char c) 是否空白符
空白符包括空格、制表符、全角空格和不间断空格static boolean
isBlankChar
(int c) 是否空白符
空白符包括空格、制表符、全角空格和不间断空格static boolean
给定对象对应的类是否为字符类,字符类包括:static boolean
isCharClass
(Class<?> clazz) 给定类名是否为字符类,字符类包括:static boolean
isEmoji
(char c) 判断是否为emoji表情符static boolean
isFileSeparator
(char c) 是否为Windows或者Linux(Unix)文件分隔符
Windows平台下分隔符为\,Linux(Unix)为/static boolean
isHexChar
(char c) 是否为16进制规范的字符,判断是否为如下字符static boolean
isLetter
(char ch) 判断是否为字母(包括大写字母和小写字母)
字母包括A~Z和a~zstatic boolean
isLetterLower
(char ch) 检查字符是否为小写字母,小写字母指a~zstatic boolean
isLetterOrNumber
(char ch) 是否为字母或数字,包括A~Z、a~z、0~9static boolean
isLetterUpper
(char ch) 判断是否为大写字母,大写字母包括A~Zstatic boolean
isNumber
(char ch) 检查是否为数字字符,数字字符指0~9static Charset
解析字符串编码为Charset对象,解析失败返回系统默认编码static Charset
解析字符串编码为Charset对象,解析失败返回默认编码static String
解码字节码static String
str
(CharSequence cs) CharSequence
转为字符串,null安全static String
将对象转为字符串static Charset
系统字符集编码,如果是Windows,则默认为GBK编码,否则取defaultCharsetName()
static String
系统字符集编码,如果是Windows,则默认为GBK编码,否则取defaultCharsetName()
static char
toCloseByNumber
(int number) 将[1-20]数字转换为带圈的字符:static char
toCloseChar
(char c) 将字母、数字转换为带圈的字符:static String
toString
(char c) 字符转为字符串
如果为ASCII字符,使用缓存static String
将对象转为字符串
-
Field Details
-
ISO_8859_1
ISO-8859-1- See Also:
-
UTF_8
UTF-8- See Also:
-
GBK
GBK- See Also:
-
CHARSET_ISO_8859_1
ISO-8859-1 -
CHARSET_UTF_8
UTF-8 -
CHARSET_GBK
GBK
-
-
Constructor Details
-
CharsetUtil
public CharsetUtil()
-
-
Method Details
-
charset
转换为Charset对象- Parameters:
charsetName
- 字符集,为空则返回默认字符集- Returns:
- Charset
- Throws:
UnsupportedCharsetException
- 编码不支持
-
parse
解析字符串编码为Charset对象,解析失败返回系统默认编码- Parameters:
charsetName
- 字符集,为空则返回默认字符集- Returns:
- Charset
- Since:
- 5.2.6
-
parse
解析字符串编码为Charset对象,解析失败返回默认编码- Parameters:
charsetName
- 字符集,为空则返回默认字符集defaultCharset
- 解析失败使用的默认编码- Returns:
- Charset
- Since:
- 5.2.6
-
convert
转换字符串的字符集编码- Parameters:
source
- 字符串srcCharset
- 源字符集,默认ISO-8859-1destCharset
- 目标字符集,默认UTF-8- Returns:
- 转换后的字符集
-
convert
转换字符串的字符集编码
当以错误的编码读取为字符串时,打印字符串将出现乱码。
此方法用于纠正因读取使用编码错误导致的乱码问题。
例如,在Servlet请求中客户端用GBK编码了请求参数,我们使用UTF-8读取到的是乱码,此时,使用此方法即可还原原编码的内容客户端 -》 GBK编码 -》 Servlet容器 -》 UTF-8解码 -》 乱码 乱码 -》 UTF-8编码 -》 GBK解码 -》 正确内容
- Parameters:
source
- 字符串srcCharset
- 源字符集,默认ISO-8859-1destCharset
- 目标字符集,默认UTF-8- Returns:
- 转换后的字符集
-
convert
转换文件编码
此方法用于转换文件编码,读取的文件实际编码必须与指定的srcCharset编码一致,否则导致乱码- Parameters:
file
- 文件srcCharset
- 原文件的编码,必须与文件内容的编码保持一致destCharset
- 转码后的编码- Returns:
- 被转换编码的文件
- Since:
- 3.1.0
-
systemCharsetName
系统字符集编码,如果是Windows,则默认为GBK编码,否则取defaultCharsetName()
- Returns:
- 系统字符集编码
- Since:
- 3.1.2
- See Also:
-
systemCharset
系统字符集编码,如果是Windows,则默认为GBK编码,否则取defaultCharsetName()
- Returns:
- 系统字符集编码
- Since:
- 3.1.2
- See Also:
-
defaultCharsetName
系统默认字符集编码- Returns:
- 系统字符集编码
-
defaultCharset
系统默认字符集编码- Returns:
- 系统字符集编码
-
bytes
编码字符串- Parameters:
str
- 字符串charset
- 字符集,如果此字段为空,则解码的结果取决于平台- Returns:
- 编码后的字节码
-
str
解码字节码- Parameters:
data
- 字符串charset
- 字符集,如果此字段为空,则解码的结果取决于平台- Returns:
- 解码后的字符串
-
str
CharSequence
转为字符串,null安全- Parameters:
cs
-CharSequence
- Returns:
- 字符串
-
utf8Str
将对象转为字符串
1、Byte数组和ByteBuffer会被转换为对应字符串的数组 2、对象数组会调用Arrays.toString方法
- Parameters:
obj
- 对象- Returns:
- 字符串
-
str
将对象转为字符串1、Byte数组和ByteBuffer会被转换为对应字符串的数组 2、对象数组会调用Arrays.toString方法
- Parameters:
obj
- 对象charset
- 字符集- Returns:
- 字符串
-
filter
过滤字符串- Parameters:
str
- 字符串filter
- 过滤器,Filter.accept(Object)
返回为true
的保留字符- Returns:
- 过滤后的字符串
- Since:
- 5.4.0
-
cleanBlank
清理空白字符- Parameters:
str
- 被清理的字符串- Returns:
- 清理后的字符串
-
isAscii
public static boolean isAscii(char ch) 是否为ASCII字符,ASCII字符位于0~127之间CharUtil.isAscii('a') = true CharUtil.isAscii('A') = true CharUtil.isAscii('3') = true CharUtil.isAscii('-') = true CharUtil.isAscii('\n') = true CharUtil.isAscii('©') = false
- Parameters:
ch
- 被检查的字符处- Returns:
- true表示为ASCII字符,ASCII字符位于0~127之间
-
isAsciiPrintable
public static boolean isAsciiPrintable(char ch) 是否为可见ASCII字符,可见字符位于32~126之间CharUtil.isAsciiPrintable('a') = true CharUtil.isAsciiPrintable('A') = true CharUtil.isAsciiPrintable('3') = true CharUtil.isAsciiPrintable('-') = true CharUtil.isAsciiPrintable('\n') = false CharUtil.isAsciiPrintable('©') = false
- Parameters:
ch
- 被检查的字符处- Returns:
- true表示为ASCII可见字符,可见字符位于32~126之间
-
isAsciiControl
public static boolean isAsciiControl(char ch) 是否为ASCII控制符(不可见字符),控制符位于0~31和127CharUtil.isAsciiControl('a') = false CharUtil.isAsciiControl('A') = false CharUtil.isAsciiControl('3') = false CharUtil.isAsciiControl('-') = false CharUtil.isAsciiControl('\n') = true CharUtil.isAsciiControl('©') = false
- Parameters:
ch
- 被检查的字符- Returns:
- true表示为控制符,控制符位于0~31和127
-
isLetter
public static boolean isLetter(char ch) 判断是否为字母(包括大写字母和小写字母)
字母包括A~Z和a~zCharUtil.isLetter('a') = true CharUtil.isLetter('A') = true CharUtil.isLetter('3') = false CharUtil.isLetter('-') = false CharUtil.isLetter('\n') = false CharUtil.isLetter('©') = false
- Parameters:
ch
- 被检查的字符- Returns:
- true表示为字母(包括大写字母和小写字母)字母包括A~Z和a~z
-
isLetterUpper
public static boolean isLetterUpper(char ch) 判断是否为大写字母,大写字母包括A~Z
CharUtil.isLetterUpper('a') = false CharUtil.isLetterUpper('A') = true CharUtil.isLetterUpper('3') = false CharUtil.isLetterUpper('-') = false CharUtil.isLetterUpper('\n') = false CharUtil.isLetterUpper('©') = false
- Parameters:
ch
- 被检查的字符- Returns:
- true表示为大写字母,大写字母包括A~Z
-
isLetterLower
public static boolean isLetterLower(char ch) 检查字符是否为小写字母,小写字母指a~z
CharUtil.isLetterLower('a') = true CharUtil.isLetterLower('A') = false CharUtil.isLetterLower('3') = false CharUtil.isLetterLower('-') = false CharUtil.isLetterLower('\n') = false CharUtil.isLetterLower('©') = false
- Parameters:
ch
- 被检查的字符- Returns:
- true表示为小写字母,小写字母指a~z
-
isNumber
public static boolean isNumber(char ch) 检查是否为数字字符,数字字符指0~9
CharUtil.isNumber('a') = false CharUtil.isNumber('A') = false CharUtil.isNumber('3') = true CharUtil.isNumber('-') = false CharUtil.isNumber('\n') = false CharUtil.isNumber('©') = false
- Parameters:
ch
- 被检查的字符- Returns:
- true表示为数字字符,数字字符指0~9
-
isHexChar
public static boolean isHexChar(char c) 是否为16进制规范的字符,判断是否为如下字符1. 0~9 2. a~f 4. A~F
- Parameters:
c
- 字符- Returns:
- 是否为16进制规范的字符
- Since:
- 4.1.5
-
isLetterOrNumber
public static boolean isLetterOrNumber(char ch) 是否为字母或数字,包括A~Z、a~z、0~9CharUtil.isLetterOrNumber('a') = true CharUtil.isLetterOrNumber('A') = true CharUtil.isLetterOrNumber('3') = true CharUtil.isLetterOrNumber('-') = false CharUtil.isLetterOrNumber('\n') = false CharUtil.isLetterOrNumber('©') = false
- Parameters:
ch
- 被检查的字符- Returns:
- true表示为字母或数字,包括A~Z、a~z、0~9
-
toString
字符转为字符串
如果为ASCII字符,使用缓存- Parameters:
c
- 字符- Returns:
- 字符串
- See Also:
-
isCharClass
给定类名是否为字符类,字符类包括:Character.class char.class
- Parameters:
clazz
- 被检查的类- Returns:
- true表示为字符类
-
isChar
给定对象对应的类是否为字符类,字符类包括:Character.class char.class
- Parameters:
value
- 被检查的对象- Returns:
- true表示为字符类
-
isBlankChar
public static boolean isBlankChar(char c) 是否空白符
空白符包括空格、制表符、全角空格和不间断空格- Parameters:
c
- 字符- Returns:
- 是否空白符
- Since:
- 4.0.10
- See Also:
-
isBlankChar
public static boolean isBlankChar(int c) 是否空白符
空白符包括空格、制表符、全角空格和不间断空格- Parameters:
c
- 字符- Returns:
- 是否空白符
- Since:
- 4.0.10
- See Also:
-
isEmoji
public static boolean isEmoji(char c) 判断是否为emoji表情符- Parameters:
c
- 字符- Returns:
- 是否为emoji
- Since:
- 4.0.8
-
isFileSeparator
public static boolean isFileSeparator(char c) 是否为Windows或者Linux(Unix)文件分隔符
Windows平台下分隔符为\,Linux(Unix)为/- Parameters:
c
- 字符- Returns:
- 是否为Windows或者Linux(Unix)文件分隔符
- Since:
- 4.1.11
-
equals
public static boolean equals(char c1, char c2, boolean caseInsensitive) 比较两个字符是否相同- Parameters:
c1
- 字符1c2
- 字符2caseInsensitive
- 是否忽略大小写- Returns:
- 是否相同
- Since:
- 4.0.3
-
getType
public static int getType(int c) 获取字符类型- Parameters:
c
- 字符- Returns:
- 字符类型
- Since:
- 5.2.3
-
digit16
public static int digit16(int b) 获取给定字符的16进制数值- Parameters:
b
- 字符- Returns:
- 16进制字符
- Since:
- 5.3.1
-
toCloseChar
public static char toCloseChar(char c) 将字母、数字转换为带圈的字符:'1' -》 '①' 'A' -》 'Ⓐ' 'a' -》 'ⓐ'
获取带圈数字 /封闭式字母数字 ,从1-20,超过1-20报错
- Parameters:
c
- 被转换的字符,如果字符不支持转换,返回原字符- Returns:
- 转换后的字符
- Since:
- 5.6.2
- See Also:
-
toCloseByNumber
public static char toCloseByNumber(int number) 将[1-20]数字转换为带圈的字符:1 -》 '①' 12 -》 '⑫' 20 -》 '⑳'
也称作:封闭式字符,英文:Enclosed Alphanumerics- Parameters:
number
- 被转换的数字- Returns:
- 转换后的字符
- Since:
- 5.6.2
- See Also:
-