数据库版本号:Oracle 10g

字符集:SIMPLIFIED CHINESE_CHINA.US7ASCII

JDK:1.6.0_45

Oracle驱动:ojdbc14.jar

使用JDBC操作数据库,获取连接、运行SQL没有问题。可是,查询出来的结果中,全部汉字,均显示为乱码。

debug查看到在数据从数据库中获取出来的时候,就已经是乱码,而使用PL/SQL等工具,均显示正常。

不知是否Oracle的驱动,在进行汉字处理的时候,使用了系统默认的字符集?此时,本着死马当活马医的理念,使用下对汉字的强制转码,ASCII码是标准的ISO-8859-1的子集,或许使用这个ISO-8859-1能够获取到正常的汉字?于是,首先測试使用new String(fieldValue.getBytes("ISO-8859-1"));输出依旧乱码!想想应该是将这东西进行转码,而不不过依照这个格式获取,于是调整为:new String(fieldValue.getBytes("ISO-8859-1"), "GBK"),測试下,搞定!不过,全部用到汉字的地方,均须要这么搞一下,有点麻烦。

据说,能够使用第二种方式:改Oracle的字符集!

1、须要改动注冊表:HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0\NLS_LANG 的值为SIMPLIFIED CHINESE_CHINA.ZHS16GBK

2、改动一个系统变量NLS_LANG.

以上两种,第二种方式试过,能够。第一种,未在现有环境下做过測试。

另外,将获取到的汉字,写入另外一个oracle 11g的数据库中,发现:汉字不是依照一个汉字两个字节来存放的;而是一个汉字3个字节!

查了一下,发现:字符集是AL32UTF8,这个字符集一般都默认中文是3个字节。于是,须要将目标数据库表的字段长度进行扩充。实际对于汉字的问题,oralce以及较新的sqlserver,都支持nvarchar的格式,对于使用nvarchar的字段,不管汉字还是数字、字符、英文字母,均每一个字符占用1位。

假设不确定当前一个汉字占用几个字符,能够使用select length('汗') from dual;进行查看。

对于US7ASCII的字符集,眼下来看,新上的系统使用的较少了,而对于一些较老的遗留系统,可能会存在这样的情况。详细还需注意!

JDBC读取Oracle的US7ASCII编码中文乱码及不同编码下汉字占用字节的问题的更多相关文章

  1. java 读取文件到String(解决中文乱码)

    在改写V&View(维视)时用到了文件管理,需要从html文档读取字符串,可是一直出现中文乱码,一直解决不了.而且很是意外,我在本地运行代码时就能正常读取中文,当放到tomcat上时全是乱码, ...

  2. 解决Linux文档显示中文乱码问题以及编码转换

    解决Linux文档显示中文乱码问题以及编码转换 解决Linux文档显示中文乱码问题以及编码转换 使vi支持GBK编码 由于Windows下默认编码是GBK,而linux下的默认编码是UTF-8,所以打 ...

  3. jdbc 读取oracle long raw 字段,里面存的是文本

    jdbc 读取oracle long raw 字段,里面存的是文本 参考: http://singlewolf.iteye.com/blog/278769 http://blog.csdn.net/r ...

  4. yii2: oracle汉字占用字节长度

    OCIStmtExecute: ORA-12899: value too large for column "WSG"."WX_ENTER_TASTE".&qu ...

  5. oracle汉字占用字节长度

    1.        今天调查一个oracle数据库问题的时候,发如今11g中一个汉字占2个字节,在10g中占3个字节.导致将11g数据库中的数据导入到10g的时候总是出错.開始的时候还以为是11g和1 ...

  6. Java底层代码实现单文件读取和写入(解决中文乱码问题)

    需求: 将"E:/data/车站一次/阿坝藏族羌族自治州.csv"文件中的内容读取,写入到"E:/data//车站一次.csv". 代码: public cla ...

  7. centos中文乱码修改字符编码使用centos支持中文

    如何你的centos显示中文乱码,只要修改字符编码使centos支持中文就可以了,没有这个文件可以创建它,下面是修改步骤 一.中文支持 安装中文语言包: 复制代码 代码如下: yum groupins ...

  8. maven构建项目时硬编码中文乱码问题解决

    场景:1. 项目采用maven作为构建工具.2. 前端页面为jsp,由前端团队独立完成,添加编码配置:<%@ page contentType="text/html;charset=u ...

  9. SpringBoot 读取properties配置文件 @Value使用 中文乱码问题

    一,idea中配置文件中文乱码问题 使用idea开发,读取properites配置文件 配置: #app 菜单 #没有限制,所有人都可访问的菜单 menu.unlimited=订单审批,现场尽调,合作 ...

随机推荐

  1. CSS笔记 - fgm练习 - 三个div变色 - CSS div等分布局

    <title>三个div变红</title> <style> *{margin: 0; padding: 0} body{ text-align: center; ...

  2. UVA 11796 - Dog Distance 向量的应用

    http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&p ...

  3. Java 学习(19):Java 多线程编程

    Java 多线程编程 Java 给多线程编程提供了内置的支持.一个多线程程序包含两个或多个能并发运行的部分.程序的每一部分都称作一个线程,并且每个线程定义了一个独立的执行路径. 多线程是多任务的一种特 ...

  4. C++ BYTE数组转字符串

    第一种情况: BYTE[0]=Ox12 BYTE[1]=0x34 BYTE[2]=0x56 最后要转换成字符串123456 另外一种情况: BYTE[0]=Ox12 BYTE[1]=0x34 BYTE ...

  5. 你说你会C++? —— 智能指针

    智能指针的设计初衷是:      C++中没有提供自己主动回收内存的机制,每次new对象之后都须要手动delete.稍不注意就memory leak. 智能指针能够解决上面遇到的问题. C++中常见的 ...

  6. Java 学习(20):Java Applet 基础 & Java 文档注释

    -- Java Applet 基础 -- Java 文档注释 Java Applet 基础 Applet 是一种 Java 程序.它一般运行在支持 Java 的 Web 浏览器内.因为它有完整的 Ja ...

  7. Web全栈工程师修养

    全栈工程师现在是个很热的话题,如何定义全栈工程师?在著名的问答网站Quora上有人提出了这个问题,其中一个获得了高票的回答是: 全栈工程师是指,一个能处理数据库.服务器.系统工程和客户端的所有工作的工 ...

  8. 【t053】整数去位

    Time Limit: 1 second Memory Limit: 128 MB [问题描述] 键盘输入一个高精度的正整数N,去掉其中任意M个数字后剩下的数字按原左右次序将组成一个新的正整数.编程对 ...

  9. [tmux] Handle history in tmux sessions

    In this lesson, we'll look at how to manage your history between tmux sessions, and ensure that your ...

  10. Hadoop源码分析(MapReduce概论)

    大家都熟悉文件系统,在对HDFS进行分析前,我们并没有花非常多的时间去介绍HDFS的背景.毕竟大家对文件系统的还是有一定的理解的,并且也有非常好的文档.在分析Hadoop的MapReduce部分前,我 ...