是不是在url加什么参数之类的就可以解决?
9 个解决方案
#1
你看看是不是数据库中存的已经是乱码了?
另外注意自己页面的编码格式。
另外注意自己页面的编码格式。
#2
import java.beans.*;
import java.io.*;
import java.lang.reflect.*;
import java.util.*;
import org.apache.commons.beanutils.*;
public class ObjectBeanUtils {
public ObjectBeanUtils() {
}
/**
* 对List对象进行转码处理
* @param List List对象
* @return String
*/
public static void ObjectConvert(List list){
if (list==null && ! (list instanceof List)) {
return ;
}
for(int i=0;i<list.size();i++){
Object co=list.get(i);
ObjectConvert(co);
}
}
/**
* 对Iterator对象进行转码处理
* @param Iterator iterator对象
* @return Iterator
*/
public static Iterator IteratorConvert(Iterator iterator){
List temp=new ArrayList();
if (iterator==null && ! (iterator instanceof Iterator)) {
return null;
}
while(iterator.hasNext()){
Object co=iterator.next();
ObjectConvert(co);
temp.add(co);
}
return temp.iterator();
}
/**
* 对Object(Class)对象进行转码处理
* @param o Object对象
* @return String
*/
public static void ObjectConvert(Object o){
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();
System.out.print(cl.getName());
if(cl.equals(String.class)){
BeanUtils.setProperty(o, element.toString(), ObjectCharacterConvertChinese(map.get(element)));
}
}
}
catch (IllegalAccessException e) {
e.printStackTrace();
}
catch (InvocationTargetException e) {
e.printStackTrace();
}
catch (NoSuchMethodException e) {
e.printStackTrace();
}
}
public static String ObjectCharacterConvertChinese(Object value){
if (value == null && ! (value instanceof String) ) {
return "";
}
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 "";
}
}
public static String ObjectCharacterConvertISO(Object value){
if (value == null && ! (value instanceof String) ) {
return "";
}
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 "";
}
}
}
用这个类做转换试试,我在mysql数据库中需要用到这个类,但是oracle9也能解决,但是oracle8没试过
import java.io.*;
import java.lang.reflect.*;
import java.util.*;
import org.apache.commons.beanutils.*;
public class ObjectBeanUtils {
public ObjectBeanUtils() {
}
/**
* 对List对象进行转码处理
* @param List List对象
* @return String
*/
public static void ObjectConvert(List list){
if (list==null && ! (list instanceof List)) {
return ;
}
for(int i=0;i<list.size();i++){
Object co=list.get(i);
ObjectConvert(co);
}
}
/**
* 对Iterator对象进行转码处理
* @param Iterator iterator对象
* @return Iterator
*/
public static Iterator IteratorConvert(Iterator iterator){
List temp=new ArrayList();
if (iterator==null && ! (iterator instanceof Iterator)) {
return null;
}
while(iterator.hasNext()){
Object co=iterator.next();
ObjectConvert(co);
temp.add(co);
}
return temp.iterator();
}
/**
* 对Object(Class)对象进行转码处理
* @param o Object对象
* @return String
*/
public static void ObjectConvert(Object o){
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();
System.out.print(cl.getName());
if(cl.equals(String.class)){
BeanUtils.setProperty(o, element.toString(), ObjectCharacterConvertChinese(map.get(element)));
}
}
}
catch (IllegalAccessException e) {
e.printStackTrace();
}
catch (InvocationTargetException e) {
e.printStackTrace();
}
catch (NoSuchMethodException e) {
e.printStackTrace();
}
}
public static String ObjectCharacterConvertChinese(Object value){
if (value == null && ! (value instanceof String) ) {
return "";
}
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 "";
}
}
public static String ObjectCharacterConvertISO(Object value){
if (value == null && ! (value instanceof String) ) {
return "";
}
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 "";
}
}
}
用这个类做转换试试,我在mysql数据库中需要用到这个类,但是oracle9也能解决,但是oracle8没试过
#3
晕。
没有象 mysql 那样,在 url 上加个参数就解决问题的方法吗?
没有象 mysql 那样,在 url 上加个参数就解决问题的方法吗?
#4
mysql 在连接参数上作文章也只是限于mysql3,mysql4就不行了,这个方法还是挺管用的,而且你还可以采用过滤器
#5
你这样是要在程序的每个角落都要写上转码的调用代码吧?
我是想,是否能在应用程序~数据库间插入一个(一层)东西,使得读数据库内容后先转码再存入entity;写数据库前先将entity内容转码后再存入数据库。
比如使用拦截器。
我能够轻易地做到转码后存入数据库。 onsave方法
可是,我不知如何才能做到取出时转码。
而且,由于我在存入前对对象进行了转码,不知如何在存入后还原
我是想,是否能在应用程序~数据库间插入一个(一层)东西,使得读数据库内容后先转码再存入entity;写数据库前先将entity内容转码后再存入数据库。
比如使用拦截器。
我能够轻易地做到转码后存入数据库。 onsave方法
可是,我不知如何才能做到取出时转码。
而且,由于我在存入前对对象进行了转码,不知如何在存入后还原
#6
jsp页面上有没有添加
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
#7
实话说,没有见过 Ora 中乱码的——就算有,许多也很好解决。
#8
哦。我是不希望采用硬编码,这样,我在每个和数据打交道的地方都要调用编码函数了
#9
修改注册表。使之变成与你的数据库相对应的字符集。
[HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0]"NLS_LANG"="american_america.we8iso8859p1"
比如说以上的是连接数据库字符集为8859的配置
[HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0]"NLS_LANG"="american_america.we8iso8859p1"
比如说以上的是连接数据库字符集为8859的配置
#1
你看看是不是数据库中存的已经是乱码了?
另外注意自己页面的编码格式。
另外注意自己页面的编码格式。
#2
import java.beans.*;
import java.io.*;
import java.lang.reflect.*;
import java.util.*;
import org.apache.commons.beanutils.*;
public class ObjectBeanUtils {
public ObjectBeanUtils() {
}
/**
* 对List对象进行转码处理
* @param List List对象
* @return String
*/
public static void ObjectConvert(List list){
if (list==null && ! (list instanceof List)) {
return ;
}
for(int i=0;i<list.size();i++){
Object co=list.get(i);
ObjectConvert(co);
}
}
/**
* 对Iterator对象进行转码处理
* @param Iterator iterator对象
* @return Iterator
*/
public static Iterator IteratorConvert(Iterator iterator){
List temp=new ArrayList();
if (iterator==null && ! (iterator instanceof Iterator)) {
return null;
}
while(iterator.hasNext()){
Object co=iterator.next();
ObjectConvert(co);
temp.add(co);
}
return temp.iterator();
}
/**
* 对Object(Class)对象进行转码处理
* @param o Object对象
* @return String
*/
public static void ObjectConvert(Object o){
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();
System.out.print(cl.getName());
if(cl.equals(String.class)){
BeanUtils.setProperty(o, element.toString(), ObjectCharacterConvertChinese(map.get(element)));
}
}
}
catch (IllegalAccessException e) {
e.printStackTrace();
}
catch (InvocationTargetException e) {
e.printStackTrace();
}
catch (NoSuchMethodException e) {
e.printStackTrace();
}
}
public static String ObjectCharacterConvertChinese(Object value){
if (value == null && ! (value instanceof String) ) {
return "";
}
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 "";
}
}
public static String ObjectCharacterConvertISO(Object value){
if (value == null && ! (value instanceof String) ) {
return "";
}
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 "";
}
}
}
用这个类做转换试试,我在mysql数据库中需要用到这个类,但是oracle9也能解决,但是oracle8没试过
import java.io.*;
import java.lang.reflect.*;
import java.util.*;
import org.apache.commons.beanutils.*;
public class ObjectBeanUtils {
public ObjectBeanUtils() {
}
/**
* 对List对象进行转码处理
* @param List List对象
* @return String
*/
public static void ObjectConvert(List list){
if (list==null && ! (list instanceof List)) {
return ;
}
for(int i=0;i<list.size();i++){
Object co=list.get(i);
ObjectConvert(co);
}
}
/**
* 对Iterator对象进行转码处理
* @param Iterator iterator对象
* @return Iterator
*/
public static Iterator IteratorConvert(Iterator iterator){
List temp=new ArrayList();
if (iterator==null && ! (iterator instanceof Iterator)) {
return null;
}
while(iterator.hasNext()){
Object co=iterator.next();
ObjectConvert(co);
temp.add(co);
}
return temp.iterator();
}
/**
* 对Object(Class)对象进行转码处理
* @param o Object对象
* @return String
*/
public static void ObjectConvert(Object o){
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();
System.out.print(cl.getName());
if(cl.equals(String.class)){
BeanUtils.setProperty(o, element.toString(), ObjectCharacterConvertChinese(map.get(element)));
}
}
}
catch (IllegalAccessException e) {
e.printStackTrace();
}
catch (InvocationTargetException e) {
e.printStackTrace();
}
catch (NoSuchMethodException e) {
e.printStackTrace();
}
}
public static String ObjectCharacterConvertChinese(Object value){
if (value == null && ! (value instanceof String) ) {
return "";
}
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 "";
}
}
public static String ObjectCharacterConvertISO(Object value){
if (value == null && ! (value instanceof String) ) {
return "";
}
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 "";
}
}
}
用这个类做转换试试,我在mysql数据库中需要用到这个类,但是oracle9也能解决,但是oracle8没试过
#3
晕。
没有象 mysql 那样,在 url 上加个参数就解决问题的方法吗?
没有象 mysql 那样,在 url 上加个参数就解决问题的方法吗?
#4
mysql 在连接参数上作文章也只是限于mysql3,mysql4就不行了,这个方法还是挺管用的,而且你还可以采用过滤器
#5
你这样是要在程序的每个角落都要写上转码的调用代码吧?
我是想,是否能在应用程序~数据库间插入一个(一层)东西,使得读数据库内容后先转码再存入entity;写数据库前先将entity内容转码后再存入数据库。
比如使用拦截器。
我能够轻易地做到转码后存入数据库。 onsave方法
可是,我不知如何才能做到取出时转码。
而且,由于我在存入前对对象进行了转码,不知如何在存入后还原
我是想,是否能在应用程序~数据库间插入一个(一层)东西,使得读数据库内容后先转码再存入entity;写数据库前先将entity内容转码后再存入数据库。
比如使用拦截器。
我能够轻易地做到转码后存入数据库。 onsave方法
可是,我不知如何才能做到取出时转码。
而且,由于我在存入前对对象进行了转码,不知如何在存入后还原
#6
jsp页面上有没有添加
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
#7
实话说,没有见过 Ora 中乱码的——就算有,许多也很好解决。
#8
哦。我是不希望采用硬编码,这样,我在每个和数据打交道的地方都要调用编码函数了
#9
修改注册表。使之变成与你的数据库相对应的字符集。
[HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0]"NLS_LANG"="american_america.we8iso8859p1"
比如说以上的是连接数据库字符集为8859的配置
[HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0]"NLS_LANG"="american_america.we8iso8859p1"
比如说以上的是连接数据库字符集为8859的配置