字符集异常

master
李东佳 2024-08-10 12:12:48 +08:00
parent 6b18f6db1c
commit 2d6a6b0d80
1 changed files with 60 additions and 97 deletions

View File

@ -1,6 +1,7 @@
package com.muyu.common.core.text; package com.muyu.common.core.text;
import com.muyu.common.core.utils.StringUtils; import com.muyu.common.core.utils.StringUtils;
import lombok.extern.log4j.Log4j2;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.BigInteger; import java.math.BigInteger;
@ -15,6 +16,7 @@ import java.util.Set;
* *
* @author muyu * @author muyu
*/ */
@Log4j2
public class Convert { public class Convert {
/** /**
* <br> * <br>
@ -23,10 +25,9 @@ public class Convert {
* *
* @param value * @param value
* @param defaultValue * @param defaultValue
*
* @return * @return
*/ */
public static String toStr (Object value, String defaultValue) { public static String toStr(Object value, String defaultValue) {
if (null == value) { if (null == value) {
return defaultValue; return defaultValue;
} }
@ -42,10 +43,9 @@ public class Convert {
* *
* *
* @param value * @param value
*
* @return * @return
*/ */
public static String toStr (Object value) { public static String toStr(Object value) {
return toStr(value, null); return toStr(value, null);
} }
@ -56,10 +56,9 @@ public class Convert {
* *
* @param value * @param value
* @param defaultValue * @param defaultValue
*
* @return * @return
*/ */
public static Character toChar (Object value, Character defaultValue) { public static Character toChar(Object value, Character defaultValue) {
if (null == value) { if (null == value) {
return defaultValue; return defaultValue;
} }
@ -77,10 +76,9 @@ public class Convert {
* *
* *
* @param value * @param value
*
* @return * @return
*/ */
public static Character toChar (Object value) { public static Character toChar(Object value) {
return toChar(value, null); return toChar(value, null);
} }
@ -91,10 +89,9 @@ public class Convert {
* *
* @param value * @param value
* @param defaultValue * @param defaultValue
*
* @return * @return
*/ */
public static Byte toByte (Object value, Byte defaultValue) { public static Byte toByte(Object value, Byte defaultValue) {
if (value == null) { if (value == null) {
return defaultValue; return defaultValue;
} }
@ -121,10 +118,9 @@ public class Convert {
* *
* *
* @param value * @param value
*
* @return * @return
*/ */
public static Byte toByte (Object value) { public static Byte toByte(Object value) {
return toByte(value, null); return toByte(value, null);
} }
@ -135,10 +131,9 @@ public class Convert {
* *
* @param value * @param value
* @param defaultValue * @param defaultValue
*
* @return * @return
*/ */
public static Short toShort (Object value, Short defaultValue) { public static Short toShort(Object value, Short defaultValue) {
if (value == null) { if (value == null) {
return defaultValue; return defaultValue;
} }
@ -165,10 +160,9 @@ public class Convert {
* *
* *
* @param value * @param value
*
* @return * @return
*/ */
public static Short toShort (Object value) { public static Short toShort(Object value) {
return toShort(value, null); return toShort(value, null);
} }
@ -179,10 +173,9 @@ public class Convert {
* *
* @param value * @param value
* @param defaultValue * @param defaultValue
*
* @return * @return
*/ */
public static Number toNumber (Object value, Number defaultValue) { public static Number toNumber(Object value, Number defaultValue) {
if (value == null) { if (value == null) {
return defaultValue; return defaultValue;
} }
@ -206,10 +199,9 @@ public class Convert {
* *
* *
* @param value * @param value
*
* @return * @return
*/ */
public static Number toNumber (Object value) { public static Number toNumber(Object value) {
return toNumber(value, null); return toNumber(value, null);
} }
@ -220,10 +212,9 @@ public class Convert {
* *
* @param value * @param value
* @param defaultValue * @param defaultValue
*
* @return * @return
*/ */
public static Integer toInt (Object value, Integer defaultValue) { public static Integer toInt(Object value, Integer defaultValue) {
if (value == null) { if (value == null) {
return defaultValue; return defaultValue;
} }
@ -250,10 +241,9 @@ public class Convert {
* *
* *
* @param value * @param value
*
* @return * @return
*/ */
public static Integer toInt (Object value) { public static Integer toInt(Object value) {
return toInt(value, null); return toInt(value, null);
} }
@ -261,10 +251,9 @@ public class Convert {
* Integer<br> * Integer<br>
* *
* @param str * @param str
*
* @return * @return
*/ */
public static Integer[] toIntArray (String str) { public static Integer[] toIntArray(String str) {
return toIntArray(",", str); return toIntArray(",", str);
} }
@ -272,10 +261,9 @@ public class Convert {
* Long<br> * Long<br>
* *
* @param str * @param str
*
* @return * @return
*/ */
public static Long[] toLongArray (String str) { public static Long[] toLongArray(String str) {
return toLongArray(",", str); return toLongArray(",", str);
} }
@ -284,16 +272,15 @@ public class Convert {
* *
* @param split * @param split
* @param str * @param str
*
* @return * @return
*/ */
public static Integer[] toIntArray (String split, String str) { public static Integer[] toIntArray(String split, String str) {
if (StringUtils.isEmpty(str)) { if (StringUtils.isEmpty(str)) {
return new Integer[]{}; return new Integer[]{};
} }
String[] arr = str.split(split); String[] arr = str.split(split);
final Integer[] ints = new Integer[arr.length]; final Integer[] ints = new Integer[arr.length];
for (int i = 0 ; i < arr.length ; i++) { for (int i = 0; i < arr.length; i++) {
final Integer v = toInt(arr[i], 0); final Integer v = toInt(arr[i], 0);
ints[i] = v; ints[i] = v;
} }
@ -305,16 +292,15 @@ public class Convert {
* *
* @param split * @param split
* @param str * @param str
*
* @return * @return
*/ */
public static Long[] toLongArray (String split, String str) { public static Long[] toLongArray(String split, String str) {
if (StringUtils.isEmpty(str)) { if (StringUtils.isEmpty(str)) {
return new Long[]{}; return new Long[]{};
} }
String[] arr = str.split(split); String[] arr = str.split(split);
final Long[] longs = new Long[arr.length]; final Long[] longs = new Long[arr.length];
for (int i = 0 ; i < arr.length ; i++) { for (int i = 0; i < arr.length; i++) {
final Long v = toLong(arr[i], null); final Long v = toLong(arr[i], null);
longs[i] = v; longs[i] = v;
} }
@ -325,10 +311,9 @@ public class Convert {
* String<br> * String<br>
* *
* @param str * @param str
*
* @return * @return
*/ */
public static String[] toStrArray (String str) { public static String[] toStrArray(String str) {
return toStrArray(",", str); return toStrArray(",", str);
} }
@ -337,10 +322,9 @@ public class Convert {
* *
* @param split * @param split
* @param str * @param str
*
* @return * @return
*/ */
public static String[] toStrArray (String split, String str) { public static String[] toStrArray(String split, String str) {
return str.split(split); return str.split(split);
} }
@ -351,10 +335,9 @@ public class Convert {
* *
* @param value * @param value
* @param defaultValue * @param defaultValue
*
* @return * @return
*/ */
public static Long toLong (Object value, Long defaultValue) { public static Long toLong(Object value, Long defaultValue) {
if (value == null) { if (value == null) {
return defaultValue; return defaultValue;
} }
@ -382,10 +365,9 @@ public class Convert {
* *
* *
* @param value * @param value
*
* @return * @return
*/ */
public static Long toLong (Object value) { public static Long toLong(Object value) {
return toLong(value, null); return toLong(value, null);
} }
@ -396,10 +378,9 @@ public class Convert {
* *
* @param value * @param value
* @param defaultValue * @param defaultValue
*
* @return * @return
*/ */
public static Double toDouble (Object value, Double defaultValue) { public static Double toDouble(Object value, Double defaultValue) {
if (value == null) { if (value == null) {
return defaultValue; return defaultValue;
} }
@ -427,10 +408,9 @@ public class Convert {
* *
* *
* @param value * @param value
*
* @return * @return
*/ */
public static Double toDouble (Object value) { public static Double toDouble(Object value) {
return toDouble(value, null); return toDouble(value, null);
} }
@ -441,10 +421,9 @@ public class Convert {
* *
* @param value * @param value
* @param defaultValue * @param defaultValue
*
* @return * @return
*/ */
public static Float toFloat (Object value, Float defaultValue) { public static Float toFloat(Object value, Float defaultValue) {
if (value == null) { if (value == null) {
return defaultValue; return defaultValue;
} }
@ -471,10 +450,9 @@ public class Convert {
* *
* *
* @param value * @param value
*
* @return * @return
*/ */
public static Float toFloat (Object value) { public static Float toFloat(Object value) {
return toFloat(value, null); return toFloat(value, null);
} }
@ -485,10 +463,9 @@ public class Convert {
* *
* @param value * @param value
* @param defaultValue * @param defaultValue
*
* @return * @return
*/ */
public static Boolean toBool (Object value, Boolean defaultValue) { public static Boolean toBool(Object value, Boolean defaultValue) {
if (value == null) { if (value == null) {
return defaultValue; return defaultValue;
} }
@ -521,10 +498,9 @@ public class Convert {
* *
* *
* @param value * @param value
*
* @return * @return
*/ */
public static Boolean toBool (Object value) { public static Boolean toBool(Object value) {
return toBool(value, null); return toBool(value, null);
} }
@ -535,10 +511,9 @@ public class Convert {
* @param clazz EnumClass * @param clazz EnumClass
* @param value * @param value
* @param defaultValue * @param defaultValue
*
* @return Enum * @return Enum
*/ */
public static <E extends Enum<E>> E toEnum (Class<E> clazz, Object value, E defaultValue) { public static <E extends Enum<E>> E toEnum(Class<E> clazz, Object value, E defaultValue) {
if (value == null) { if (value == null) {
return defaultValue; return defaultValue;
} }
@ -564,10 +539,9 @@ public class Convert {
* *
* @param clazz EnumClass * @param clazz EnumClass
* @param value * @param value
*
* @return Enum * @return Enum
*/ */
public static <E extends Enum<E>> E toEnum (Class<E> clazz, Object value) { public static <E extends Enum<E>> E toEnum(Class<E> clazz, Object value) {
return toEnum(clazz, value, null); return toEnum(clazz, value, null);
} }
@ -578,10 +552,9 @@ public class Convert {
* *
* @param value * @param value
* @param defaultValue * @param defaultValue
*
* @return * @return
*/ */
public static BigInteger toBigInteger (Object value, BigInteger defaultValue) { public static BigInteger toBigInteger(Object value, BigInteger defaultValue) {
if (value == null) { if (value == null) {
return defaultValue; return defaultValue;
} }
@ -608,10 +581,9 @@ public class Convert {
* *
* *
* @param value * @param value
*
* @return * @return
*/ */
public static BigInteger toBigInteger (Object value) { public static BigInteger toBigInteger(Object value) {
return toBigInteger(value, null); return toBigInteger(value, null);
} }
@ -622,10 +594,9 @@ public class Convert {
* *
* @param value * @param value
* @param defaultValue * @param defaultValue
*
* @return * @return
*/ */
public static BigDecimal toBigDecimal (Object value, BigDecimal defaultValue) { public static BigDecimal toBigDecimal(Object value, BigDecimal defaultValue) {
if (value == null) { if (value == null) {
return defaultValue; return defaultValue;
} }
@ -658,10 +629,9 @@ public class Convert {
* *
* *
* @param value * @param value
*
* @return * @return
*/ */
public static BigDecimal toBigDecimal (Object value) { public static BigDecimal toBigDecimal(Object value) {
return toBigDecimal(value, null); return toBigDecimal(value, null);
} }
@ -670,10 +640,9 @@ public class Convert {
* 1ByteByteBuffer 2Arrays.toString * 1ByteByteBuffer 2Arrays.toString
* *
* @param obj * @param obj
*
* @return * @return
*/ */
public static String utf8Str (Object obj) { public static String utf8Str(Object obj) {
return str(obj, CharsetKit.CHARSET_UTF_8); return str(obj, CharsetKit.CHARSET_UTF_8);
} }
@ -683,11 +652,15 @@ public class Convert {
* *
* @param obj * @param obj
* @param charsetName * @param charsetName
*
* @return * @return
*/ */
public static String str (Object obj, String charsetName) { public static String str(Object obj, String charsetName) {
return str(obj, Charset.forName(charsetName)); try {
return str(obj, Charset.forName(charsetName));
} catch (Exception exception) {
log.error("字符转换异常, [{}-{}] -> {}", obj, charsetName, exception.getMessage(), exception);
throw new RuntimeException(exception);
}
} }
/** /**
@ -696,10 +669,9 @@ public class Convert {
* *
* @param obj * @param obj
* @param charset * @param charset
*
* @return * @return
*/ */
public static String str (Object obj, Charset charset) { public static String str(Object obj, Charset charset) {
if (null == obj) { if (null == obj) {
return null; return null;
} }
@ -713,7 +685,7 @@ public class Convert {
Byte[] bytes = (Byte[]) obj; Byte[] bytes = (Byte[]) obj;
int length = bytes.length; int length = bytes.length;
byte[] dest = new byte[length]; byte[] dest = new byte[length];
for (int i = 0 ; i < length ; i++) { for (int i = 0; i < length; i++) {
dest[i] = bytes[i]; dest[i] = bytes[i];
} }
return str(dest, charset); return str(dest, charset);
@ -729,10 +701,9 @@ public class Convert {
* *
* @param bytes byte * @param bytes byte
* @param charset * @param charset
*
* @return * @return
*/ */
public static String str (byte[] bytes, String charset) { public static String str(byte[] bytes, String charset) {
return str(bytes, StringUtils.isEmpty(charset) ? Charset.defaultCharset() : Charset.forName(charset)); return str(bytes, StringUtils.isEmpty(charset) ? Charset.defaultCharset() : Charset.forName(charset));
} }
@ -741,10 +712,9 @@ public class Convert {
* *
* @param data * @param data
* @param charset * @param charset
*
* @return * @return
*/ */
public static String str (byte[] data, Charset charset) { public static String str(byte[] data, Charset charset) {
if (data == null) { if (data == null) {
return null; return null;
} }
@ -760,10 +730,9 @@ public class Convert {
* *
* @param data * @param data
* @param charset 使 * @param charset 使
*
* @return * @return
*/ */
public static String str (ByteBuffer data, String charset) { public static String str(ByteBuffer data, String charset) {
if (data == null) { if (data == null) {
return null; return null;
} }
@ -776,10 +745,9 @@ public class Convert {
* *
* @param data * @param data
* @param charset 使 * @param charset 使
*
* @return * @return
*/ */
public static String str (ByteBuffer data, Charset charset) { public static String str(ByteBuffer data, Charset charset) {
if (null == charset) { if (null == charset) {
charset = Charset.defaultCharset(); charset = Charset.defaultCharset();
} }
@ -792,10 +760,9 @@ public class Convert {
* *
* *
* @param input String. * @param input String.
*
* @return . * @return .
*/ */
public static String toSBC (String input) { public static String toSBC(String input) {
return toSBC(input, null); return toSBC(input, null);
} }
@ -804,12 +771,11 @@ public class Convert {
* *
* @param input String * @param input String
* @param notConvertSet * @param notConvertSet
*
* @return . * @return .
*/ */
public static String toSBC (String input, Set<Character> notConvertSet) { public static String toSBC(String input, Set<Character> notConvertSet) {
char[] c = input.toCharArray(); char[] c = input.toCharArray();
for (int i = 0 ; i < c.length ; i++) { for (int i = 0; i < c.length; i++) {
if (null != notConvertSet && notConvertSet.contains(c[i])) { if (null != notConvertSet && notConvertSet.contains(c[i])) {
// 跳过不替换的字符 // 跳过不替换的字符
continue; continue;
@ -829,10 +795,9 @@ public class Convert {
* *
* *
* @param input String. * @param input String.
*
* @return * @return
*/ */
public static String toDBC (String input) { public static String toDBC(String input) {
return toDBC(input, null); return toDBC(input, null);
} }
@ -841,12 +806,11 @@ public class Convert {
* *
* @param text * @param text
* @param notConvertSet * @param notConvertSet
*
* @return * @return
*/ */
public static String toDBC (String text, Set<Character> notConvertSet) { public static String toDBC(String text, Set<Character> notConvertSet) {
char[] c = text.toCharArray(); char[] c = text.toCharArray();
for (int i = 0 ; i < c.length ; i++) { for (int i = 0; i < c.length; i++) {
if (null != notConvertSet && notConvertSet.contains(c[i])) { if (null != notConvertSet && notConvertSet.contains(c[i])) {
// 跳过不替换的字符 // 跳过不替换的字符
continue; continue;
@ -865,10 +829,9 @@ public class Convert {
* *
* *
* @param n * @param n
*
* @return * @return
*/ */
public static String digitUppercase (double n) { public static String digitUppercase(double n) {
String[] fraction = {"角", "分"}; String[] fraction = {"角", "分"};
String[] digit = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"}; String[] digit = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};
String[][] unit = {{"元", "万", "亿"}, {"", "拾", "佰", "仟"}}; String[][] unit = {{"元", "万", "亿"}, {"", "拾", "佰", "仟"}};
@ -877,7 +840,7 @@ public class Convert {
n = Math.abs(n); n = Math.abs(n);
String s = ""; String s = "";
for (int i = 0 ; i < fraction.length ; i++) { for (int i = 0; i < fraction.length; i++) {
// 优化double计算精度丢失问题 // 优化double计算精度丢失问题
BigDecimal nNum = new BigDecimal(n); BigDecimal nNum = new BigDecimal(n);
BigDecimal decimal = new BigDecimal(10); BigDecimal decimal = new BigDecimal(10);
@ -890,9 +853,9 @@ public class Convert {
} }
int integerPart = (int) Math.floor(n); int integerPart = (int) Math.floor(n);
for (int i = 0 ; i < unit[0].length && integerPart > 0 ; i++) { for (int i = 0; i < unit[0].length && integerPart > 0; i++) {
String p = ""; String p = "";
for (int j = 0 ; j < unit[1].length && n > 0 ; j++) { for (int j = 0; j < unit[1].length && n > 0; j++) {
p = digit[integerPart % 10] + unit[1][j] + p; p = digit[integerPart % 10] + unit[1][j] + p;
integerPart = integerPart / 10; integerPart = integerPart / 10;
} }