QtSql编程RedHat linux系统下oracle数据库中文乱码
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了QtSql编程RedHat linux系统下oracle数据库中文乱码相关的知识,希望对你有一定的参考价值。
使用QtSql访问oracle数据库,记录中有中文的地方全都是乱码,但是使用 SqlPlus查看能正常显示中文,数据库就安装在本机上,数据库使用的编码是American_Americaca_US7ASCII
我在main.cpp中设置了
QTextCodec::setCodecForLocale(QTextCodec::codecForName("GB18030"));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GB18030"));
QTextCodec::setCodecForTr(QTextCodec::codecForName("GB18030"));
GB2312也试过了
求高手来解决
首先确认你的NLS_LANG环境变量是AMERICAN_AMERICA.US7ASCII,拼写无误
统一编码设置:
统一GBK编码(gbk或gb18030)QTextCodec *gbkTC = QTextCodec::codecForName("gbk");
QTextCodec::setCodecForTr(gbkTC );
QTextCodec::setCodecForLocale(gbkTC );
QTextCodec::setCodecForCStrings(gbkTC );
统一UTF8编码(utf-8或utf8)
QTextCodec *utg8TC = QTextCodec::codecForName("utf-8");
QTextCodec::setCodecForTr(utg8TC );
QTextCodec::setCodecForLocale(utg8TC );
QTextCodec::setCodecForCStrings(utg8TC );
编码转换/前提也是要设置默认编码,然后针对来源字符串的编码进行转换,例如:
QTextCodec *utg8TC = QTextCodec::codecForName("utf-8");
QTextCodec::setCodecForTr(gbkTC);
QTextCodec::setCodecForLocale(gbkTC);
QTextCodec::setCodecForCStrings(gbkTC);
1. UTF-8 转换 GBK
QString UTF2GBK(QString utfStr)
return gbkTC->toUnicode(utfStr.toLocal8Bit());
2 GBK 转换 UTF-8
QString GBK2UTF(QString gbkStr)
return utg8TC->toUnicode(gbkStr.toUtf8());
不大懂, 环境变量我用echo $NLS_LANG看过了,也是这个
现在
QSqlQueryModel *sqlModel;
sqlModel->setQuery("SELECT * FROM TABLE_INFO");
QString name_chn = record.value("TABLE_NAME_CHN").toString();
我该拿这个name_chn怎么处理呢?
尝试这样转码看看:
QString name_chn = QString::fromLocal8Bit( record.value("TABLE_NAME_CHN").toString() );
尝试这样转码:
QString name_chn = QString::fromLocal8Bit( record.value("TABLE_NAME_CHN").toString() );
--
追问还是不行
参考技术A 统一使用utf-8编码就可以了,其他编码不建议考虑,统一utf-8能够做到各个平台的最大的兼容性。 参考技术B 程序显示数据库里面的文字, 程序编码要和数据库的编码对应,我做QT + sqlite3,sqlite3编码是GB2312, main.cpp里必须是GB2312,否则就显示乱码.
对应的American_Americaca_US7ASCII编码, 你设置UTF-8试试看.
Redhat5_linux 系统环境下 oracl11g的安装教程图解
linux_oracl11g 安装步骤
操作系统的安装敬请参考此文:VM 安装 linux Enterprise_R5_U4_Server_I386_DVD教程图解
设置linux服务器的静态地址请参考该文《oracl11g的安装教程图解》
yum仓库搭建:
Vmware Workstation虚拟机 请参考《Vmware Workstation _linux yum 仓库搭建》
Oracle Vm Workstation虚拟机 请查看《Oracle Vm VirtualBox 搭建 yum 环境》
一:操作步骤目录:
1、搭建yum,安装包(root用户下完成)
2、检查参数/etc/sysctl.conf /etc/security/limits.conf(root用户下完成)
3、创建用户组和用户(root用户下完成)
4、创建目录,并改权限(root用户下完成)
5、设置IP 地址和主机名的映射/etc/hosts(root用户下完成)
6、设置oracle用户的环境变量/home/oracle/.bash_profile(oracle用户下完成)
7、复制oracle软件包和安装(oracle用户下完成)
unzip 软件包名称
8、在root用户执行二个脚本
[oracle@wl database]$ sqlplus / as sysdba
9、使用DBCA工具创建和配置数据库
二:具体操作步骤
操作步骤:一:检测yum仓库是否已经配置好了
1:搭建yum,安装包(root 用户下完成)
1 [root@oracle ~]# yum list all
如果输入这条指令可以正确显示出rpm 包的列表,则说明yum 仓库已经配置完成,反之如下图则表示yum仓库没有安装好,需要进行下列后序步骤;
操作步骤二:搭建yuml 仓库
1) 挂载所需要的安装光盘
虚拟机挂载光盘:
设置→ 光盘→ 路径(在“连接”处打勾)
1 #将光盘挂载到/mnt 目录下 2 [root@oracle ~]# mount /dev/cdrom -o loop /mnt
2) 切换至yum.repo.d 目录下
1 [root@oracle ~]# cd /etc/yum.repos.d/
3) 创建任意文件名,后缀为.repo 的文件
1 [root@oracle ~]# vi server.repo
4) 编辑该文件如下
1 [root@oracle ~]# vi server.repo 2 3 [server] 4 #名称可以任取 5 name=Red Hat Enterprise Linux 6 7 #//若为本机,file:///mnt/Server 8 baseurl=ftp://192.168.0.254/pub/rhel6/dvd/ 9 #//启用yum 仓库,默认为启用 10 enabled=1 11 #//验证设置为否 12 gpgcheck=0 13
操作步骤三: 安装所需要的包
1) 编辑脚本以安装所需要的包
1 [root@oracle ~]# vi yum.sh 2 3 yum install binutils* -y 4 5 yum install compat* -y 6 7 yum install elfutils* -y 8 9 yum install gcc* -y 10 11 yum install glibc* -y 12 13 yum install kernel* -y 14 15 yum install ksh* -y 16 17 yum install libaio* -y 18 19 yum install libgcc* -y 20 21 yum install libgomp* -y 22 23 yum install libstdc* -y 24 25 yum install make* -y 26 27 yum install sysstat* -y 28
2) 修改权限以执行脚本
1 [root@oracle ~]# chmod 755 yum.sh
3) 执行脚本以安装必须的包
1 [root@oracle ~]# ./yum.sh
操作步骤四:修改相关的系统配置
1:修改etc/sysctl.conf
1) 在/etc/sysctl.conf 文件尾部追加以下内容
1 [root@oracle ~]# vi /etc/sysctl.conf 2 3 fs.aio-max-nr = 1048576 4 5 fs.file-max = 6815744 6 7 kernel.shmall = 2097152 8 9 kernel.shmmax = 4294967295 10 11 kernel.shmmni = 4096 12 13 kernel.sem = 250 32000 100 128 14 15 net.ipv4.ip_local_port_range = 9000 65500 16 17 net.core.rmem_default = 262144 18 19 net.core.rmem_max = 4194304 20 21 net.core.wmem_default = 262144 22 23 net.core.wmem_max = 1048576 24
2) 保存并退出,使修改生效
1 [root@oracle ~]# /sbin/sysctl -p
2. 修改/etc/security/limits.conf
//在/etc/secuirty/limits.conf 文件尾部追加以下内容,以设置用户限制
1 [root@oracle ~]# vi /etc/security/limits.conf 2 3 oracle soft nproc 2047 4 5 oracle hard nproc 16384 6 7 oracle soft nofile 1024 8 9 oracle hard nofile 65536 10 11 oracle soft stack 10240 12
3. 修改/etc/pam.d/login
//在/etc/pam.d/login 文件尾部追加以下内容,以修改登录配置
1 [root@oracle ~]# vi /etc/pam.d/login
session required pam_limits.so
4. 关闭SELINUX 功能
1 [root@oracle ~]# vi /etc/selinux/config
1 SELINUX=disabled //这里设置为disabled 即关闭SELINX
5. 修改/etc/hosts 文件
需要保证三处的主机名一致:
● /etc/hosts 中的长主机名
● 使用hostname 指令显示的主机名
● /etc/sysconfig/network 中的主机名//修改主机名后需要重启机器
使用IFCONFIG 指令查看本机IP
1 [root@oracle ~]# ifconfig
//确保此处IP 和/etc/hosts 文件中的IP 地址
----------------------------------------------------------------
1):查看本机hosts文件信息
1 [root@localhost ~]# hostname
2):修改hosts文件信息
1 [root@oracle ~]# vi /etc/hosts
1 127.0.0.1 localhost.localdomain localhost 2 3 #本机IP 地址//长主机名//短主机名 4 5 192.168.21.4 oracle.example.com oracle 6
操作步骤五:创建用户和用户组、创建安装目录
1. 创建dba、oinstall 用户组
1 #以root 用户登录 2 #添加dba 用户组(ORACLE 管理组) 3 [root@oracle ~]# groupadd dba 4 #添加oinstall 用户组(ORACLE 安装组) 5 [root@oracle ~]# groupadd oinstall 6 #创建oracle 用户并加入组 7 [root@oracle ~]# useradd -g oinstall -G dba oracle 8 #修改oracle 用户的密码 9 [root@oracle ~]# passwd oracle 10
2. 创建安装目录
1 #切换到根目录 2 [root@oracle ~]# cd / 3 #创建安装目录 4 [root@oracle /]# mkdir -p /u01/app/oracle 5 #修改安装目录的权限 6 [root@oracle /]# chown oracle:oinstall /u01/app/oracle/ 7
操作步骤六:修改环境变量
1) 将以下几行追加在oracle 用户的环境变量中
1 [oracle@oracle ~]$ vi .bash_profile 2 #//数据库实例名 3 export ORACLE_SID=orcl 4 #//ORACLE 安装目录 5 export ORACLE_BASE=/u01/app/oracle 6 #//ORACLE 家目录 7 export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1 8 #//搜索路径 9 export PATH=$PATH:$ORACLE_HOME/bin 10 11 #//以下内容可不写 12 #//指定安装Oracle 终端的类型 13 export ORACLE_TERM=xterm 14 15 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib 16 17 #设置临时的库文件的path 路径 18 19 export CLASSPATH=$ORACLE_HOME/JRE:ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib 20 21 #设置java lib 文件搜索路径 22
2) 保存,并使参数生效
1 [oracle@oracle ~]$ source .bash_profile
--------------------------------------------------------------------------------------------------------------------------------------
操作七:上传并解压oracle11g安装包
1:上传:
1):用鼠标在ssh2的连接页签上面右键选择“连接SFTP标签”
2):在sftp页签中:用put filepath 的方式上传文件
2:文件解压
1):用root用户登录进行:移动文件到oracle用户的/home/oracle目录下,并设置权限
注:安装包下载地址;可以去oracle官网下载;也可以使用我提供的oracle 11g R2 的安装包: 链接: https://pan.baidu.com/s/1aN8FEIHZ0nV2O0N5YW1OaQ 密码: q3jq
2):切换到oracle 用户:进行解压oracle 11g 安装包
同理:解压第三个压缩包
操作八:安装oracle 11g 数据库
1:安装Xme30.exe 软件
软件下载路劲:链接:http://pan.baidu.com/s/1gf5cbKn 密码:m1pn
1):安装步骤一直下一步即可
2):注册lic
3):启动工具
2:oracle 11g 安装步骤图解
1):调用oracle 11g 安装图形界面(用oracle 用户登录)
2):oracle 11g 数据库 图形安装
图1:
图2:
图三:
图四:
图5:
图6:
图7:
设置 app 文件夹的权限信息
图8:
图9:
用root 用户 创建 oper 组
([root@oracle u01] 文件夹怎么进入的请参考上面图7 “设置app 文件夹权限信息”步骤)
图10 开始检测
检测成功
如果检测失败,如何修改配置文件参数信息(如下图界面)
点击上图红框的位置,进入下图
重新检测成功后,点击“install”进行数据库的安装
图11:开始安装(漫长的等待)
图12:当进入下图界面,后要进行命令执行
在 [root@oracle u01] 的root 用户下 当前目录为u01 下进行命令执行
图13:点击“ok”按钮后,进入下图界面,点击‘close’按钮后关闭界面,数据库安装完毕
3)oracle 11g 数据库实例 图形安装
图1:在[oracle@oracle database] 目录下 执行dbca 命令调用 数据库实例 图形安装界面
图2 :next
图3:下一步
图4:
查看环境变量中sid
输入sid后点击next
图5:进行listener设置
解决方案:
①:在linux 虚拟机中打开命令窗口,执行如下图的命令
②:然后执行下图命令,调出 listener 设置图形界面,然后一路下一步到结束
③:listener 参数设置,一路设置默认一路下一步;
切换到window系统中oracle 11g 实例安装图形界面中
图6:oracle 11g 实例 登录用户账户/密码设置
图7 :
图8:默认下一步
图9:
图10:
图11:
注意:
如果在调整内存的大小时,过于太大时出现以下错误,解决方法如下
解决方法:修改 /de/shm 的大小
这时,可以切换到其他选项了
图12:
点击“ok”安装结束
进行实例安装
以上是关于QtSql编程RedHat linux系统下oracle数据库中文乱码的主要内容,如果未能解决你的问题,请参考以下文章