项目中用到的是ORACLE数据库,字符编码是GBK,所以在数据库中一个汉字占用2个字节,如果是UTF-8编码,则一个汉字占用3个字节。
也就说如果字段定义为VARCHAR2(100),则最多存储50个汉字,如果是UTF-8编码,则最多存储33个汉字。
项目中有个需求是到处文件,要求:每个字段按一定的长度到处,如果数据不足则后补空格,如果超过指定长度则截取。
import java.io.UnsupportedEncodingException; import java.util.Arrays; import org.apache.commons.lang.StringUtils; public class OpeBytes { /** * 根据制定字节长度截取字符串,不足后面补空格 * @param aim 目标字符串 * @param length 指定字节长度 * @return 新的字符串 */ public static String getNewStr(String aim, int length) { byte[] bytes; String string = ""; try { if (StringUtils.isNotBlank(aim)) { bytes = aim.getBytes("GBK"); int temLength = bytes.length; if (temLength > length) { byte[] copyOf = Arrays.copyOf(bytes, length); string = new String(copyOf, "GBK"); } else { int i = length - temLength; if (i > 0) { aim += String.format("%-" + i + "s", " "); } string = aim; } } else { aim = ""; aim += String.format("%-" + length + "s", " "); string = aim; } } catch (UnsupportedEncodingException e) { System.out.println("获取字符串字节异常:" + e); } return string; } }