您的位置:首页 > 数据库 > Oracle

Oracle 数据库转码 US7ASCII ZHS16GBK

2016-04-07 23:23 393 查看
Oracle数据库编码一般是 ZHS16GBK,但是 遇到一个Oracle数据库是 US7ASCII编码,在显示中文的时候遇到了问题,出现乱码下面给出如下解决方式:

步骤一:读取编码的配置文件

public class SystemConfig {
private final static String PROPERTIES_NAME = "sysconfig.conf";

public static String getProperties(String configName) throws UtilException{
try{
PropertyResourceBundle prbConfig = (PropertyResourceBundle)PropertyResourceBundle.getBundle(PROPERTIES_NAME);
return prbConfig.getString(configName);
}catch(Exception e){
throw new UtilException(e,"");
}
}
}


步骤二:编码解码

public class BeanCodingConvert {
public final static int ISO2GBK = 1;
public final static int GBK2ISO = 2;

public BeanCodingConvert() {
super();
}

public static void ObjectConvert(List list,int encodeType) {
if (list == null && !(list instanceof List)) {
return;
}
for (int i = 0; i < list.size(); i++) {
Object co = list.get(i);
if(co instanceof Object[])
ObjectConvert((Object[])co, encodeType);
else{
if(co instanceof String){
co = StringConvert((String)co, encodeType);
list.set(i, co);
}else{
ObjectConvert(co,encodeType);
}
}
}
}

public static void ObjectConvert(Iterator iter,int encodeType) {
if (iter == null && !(iter instanceof Iterator)) {
return;
}
while (iter.hasNext()) {
Object co = iter.next();
ObjectConvert(co,encodeType);
}
}

public static void ObjectConvert(Object[] o,int encodeType) {
for(int i = 0;i < o.length; i++){
if (o[i] instanceof String)
o[i] = StringConvert((String)o[i],encodeType);
}
}

public static void ObjectConvert(Object o,int encodeType) {
try {
Map map = BeanUtils.describe(o);
Set keySet = map.keySet();
for (Iterator iter = keySet.iterator(); iter.hasNext();) {
Object element = (Object) iter.next();

PropertyDescriptor desc = PropertyUtils.getPropertyDescriptor(
o, element.toString());
Class cl = desc.getPropertyType();
if (cl.equals(String.class)) {
BeanUtils.setProperty(o, element.toString(),
encodeType==ISO2GBK?ObjectCharacterConvertChinese(map.get(element)):ObjectCharacterConvertISO(map.get(element)));
}
}
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
}
}

public static String StringConvert(String s,int encodeType){
String tmp = encodeType==ISO2GBK?ObjectCharacterConvertChinese(s):ObjectCharacterConvertISO(s);
return tmp;
}

public static String[] StringConvert(String[] args, int encodeType){
for(int i=0; i<args.length; i++){
args[i] = StringConvert(args[i], encodeType);
}
return args;
}

private static String ObjectCharacterConvertChinese(Object value) {
if (value == null && !(value instanceof String)) {
return null;
}
try {
String temp_p = (String) value;
byte[] temp_t = temp_p.getBytes("ISO-8859-1");
String unicode = new String(temp_t, "gbk");
return unicode;
} catch (UnsupportedEncodingException e) {
return "";
}
}

private static String ObjectCharacterConvertISO(Object value) {
if (value == null && !(value instanceof String)) {
return null;
}
try {
String temp_p = (String) value;
byte[] temp_t = temp_p.getBytes("gbk");
String unicode = new String(temp_t, "ISO-8859-1");
return unicode;
} catch (UnsupportedEncodingException e) {
return "";
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: