- 浏览: 153171 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
leon.s.kennedy:
实际上<sec:authorize ifAllGrant ...
Spring Security 标签使用 -
leon.s.kennedy:
jasonw68 写道这只是一个demo 实际怎么应用要看自己 ...
Spring Security 标签使用 -
jasonw68:
这只是一个demo 实际怎么应用要看自己项目设计的需要!
Spring Security 标签使用 -
leon.s.kennedy:
引用:在web页面进行元素安全控制Java代码方式一 < ...
Spring Security 标签使用 -
xiangxuehai_jiaer:
...
sql where 1=1 0=1 的妙用
先介绍一下shell所在的环境:
操作系统 Linux Suse 9 数据库 Oracle 9i
Suse的环境变量:
NLS_LANG=SIMPLIFIED CHINESE_CHINA.UTF8 (控制Oracle客户端应用程序使用的字符集)
LANG=zh_CN.gbk(操作系统的语言字符集)
Oracle服务器的字符集:UTF8(Oracle服务器端的字符集)
shell的执行方式:先用ftp工具将脚本以asc方式上传至Suse上,然后利用telnet工具登录Suse来运行shell。下面
一段为原始shell,即执行结果出现乱码问题的代码。功能是通过调用存储过程,获得返回出参,并将出参值写到目标文件
DelProductInfoResult.txt中:
set serveroutput on
set pagesize 0
set linesize 32767
set feedback off
DECLARE
ret1 varchar2 ( 1000 );
BEGIN
zxdbm_ismp.product_delete( ' ${v_productid} ' ,ret1);
DBMS_OUTPUT.PUT_LINE(ret1);
END ;
/
exit ;
EOF`
echo "del_time:"$v_time
echo $del_info
echo $del_info >> $vac_product_path" / result / "$v_time"DelProductInfoResult.txt"
上面2段原始脚本被执行后:
telnet工具的屏幕上打印的变量del_info为:111100027100000000026|鎴愬姛|浜у搧锛?|涓氬姟锛?|浜у搧鎸囦护锛
同时,目标文件DelProductInfoResult.txt中的内容也为:111100027100000000026|鎴愬姛|浜у搧锛?|涓氬姟锛?|浜у搧鎸囦护锛
分
析原因:Suse系统上的oracle客户端的NLS_LANG变量为:SIMPLIFIED CHINESE_CHINA.UTF8,
当存储过程zxdbm_ismp.product_delete('${v_productid}',ret1);执行后,通过sqlplus将返回值打
印在telnet工具屏幕上,由于Suse的操作系统环境变量LANG=zh_CN.gbk,导致返回的中文信息写到telnet屏幕上时,ret1的值
显示为乱码。即对于下面PL/SQL语句:
set pagesize 0
set linesize 32767
set feedback off
DECLARE
ret1 varchar2 ( 1000 );
BEGIN
zxdbm_ismp.product_delete( ' 111100027100000000026 ' ,ret1);
DBMS_OUTPUT.PUT_LINE(ret1);
END ;
/
【1】当SUSE的NLS_LANG为SIMPLIFIED CHINESE_CHINA.UTF8时,telnet到Suse后,sqlplus连上Oracle并执行上面的PL/SQL语句后,ret1的打印信息如下:
SQL> set serveroutput on
SQL> set pagesize 0
SQL> set linesize 32767
SQL> set feedback off
SQL> DECLARE
2 ret1 varchar2(1000);
3 BEGIN
4 zxdbm_ismp.product_delete('111100027100000000026',ret1);
5 DBMS_OUTPUT.PUT_LINE(ret1);
6 END;
7 /
111100027100000000026|鎴愬姛|浜у搧锛?|涓氬姟锛?|浜у搧鎸囦护锛?
【2】当SUSE的NLS_LANG为SIMPLIFIED CHINESE_CHINA.ZHS16GBK时,telnet到Suse后,sqlplus连上Oracle并执行上面的PL/SQL语句后,ret1的打印信息如下:
SQL> set serveroutput on
SQL> set pagesize 0
SQL> set linesize 32767
SQL> set feedback off
SQL> DECLARE
2 ret1 varchar2(1000);
3 BEGIN
4 zxdbm_ismp.product_delete('111100027100000000026',ret1);
5 DBMS_OUTPUT.PUT_LINE(ret1);
6 END;
7 /
111100027100000000026|成功|产品:1|业务:1|产品指令:0
乱码问题的解决思路:
经过将Suse的NLS_LANG变量更改为SIMPLIFIED CHINESE_CHINA.ZHS16GBK,该问题得到解决。
开头的原始shell脚本被执行后:
telnet工具的屏幕上打印的变量del_info为:111100027100000000026|成功|产品:1|业务:1|产品指令:0
同时,目标文件DelProductInfoResult.txt中的内容也为:111100027100000000026|成功|产品:1|业务:1|产品指令:0
但是,按照这修改操作系统的环境变量NLS_LANG来实现乱码问题的解决始终不是好的方法,这样的更改操作系统环境变量,会影响到运行在该系统上的其他应用程序的运行。
鉴于这样,就得来通过扩展shell脚本的功能代码,来适应在特定操作系统的环境变量下,没有乱码出现。
下
面一段代码,通过判断操作系统NLS_LANG值,如果是UTF8,则先将变量del_info的值写到临时文件中,再通过iconv命令将临时文件的内
容的编码方式由utf8转换为gb2312,以跟操作系统的LANG环境变量保持一致,再将转换编码方式后的临时文件的内容写到目标文件
DelProductInfoResult.txt中。这样,就在不更改操作系统NLS_LANG变量的情况下,实现乱码问题的解决:
then
echo "NLS_LANG not set !"
exit
else
echo "NLS_LANG:" $NLS_LANG
if [ "$NLS_LANG" = "SIMPLIFIED CHINESE_CHINA.UTF8" ]
then
del_info = `echo $send_day | awk ' { print $1 } ' `
echo "del_time:"$v_time
echo $del_info
echo $del_info > $vac_product_path" / cc. temp "
iconv - f utf - 8 - t gb2312 $vac_product_path" / cc. temp " >> $vac_product_path" / result / "$v_time"DelProductInfoResult.txt"
rm - f $vac_product_path" / cc. temp "
else
del_info = `echo $send_day | awk ' { print $1 } ' `
echo "del_time:"$v_time
echo $del_info
echo $del_info >> $vac_product_path" / result / "$v_time"DelProductInfoResult.txt"
fi
fi
发表评论
-
DES密钥保护
2013-10-21 22:03 743oracle9i就是我们的密钥. 所以,如果只是简单地 ... -
temp
2012-11-06 17:19 0-- -- PostgreSQL database dump ... -
oracle 索引失效原因及解决方法
2012-07-24 14:34 1623一、以下的方法会引起索引失效 1,<> ... -
分区索引实例
2012-07-19 09:51 848--1、建分区表 CREATE TABLE P_TAB( ... -
如何在oracle中导入导出dmp数据库文件
2012-07-19 09:50 1049Oracle数据导入导出imp/exp就相当于oracle数据 ... -
ORACLE 多表关联update
2012-07-19 09:51 1265Oracle两表关联执行update时,因为没有像SqlSer ... -
ibatis代码生成工具
2012-07-19 09:51 1040<?xml version="1.0& ... -
多表关联更新
2012-07-19 09:52 907两表(多表)关联update的写法 ... -
(转发)PostgreSQL 与 Oracle 相异点
2011-12-16 16:06 1788前段时间做了一个数据库移植的项目,对Oracle SQL 转化 ... -
postgresql with 递归查询
2011-11-01 09:40 8429Oracle数据库中的用 CONNECT BY来做 递归 查 ... -
索引应用
2011-07-11 15:02 9341.索引分类 a) 唯一索引, 作用是数据约束,保 ... -
oracle 创建表空间和用户
2011-06-16 13:38 8871.E:\oracle\product\10.2.0\orad ... -
TNSNAMES.ORA 配置
2011-06-16 13:07 1523上面的sqlnet.ora文件说明: SQLNET.AUTH ... -
Oracle 常用数据字典
2011-03-10 22:50 995下面按类别列出一些oracle用户常用数据字典的查询使用 ... -
Oracle dml和ddl扩展
2011-03-10 22:46 9311.语句回顾 1)用insert语句添加新行到表中 ... -
Oracle 树分级查询
2011-03-10 22:33 23791.分级查询 select [level] ... -
ORACLE解表锁
2010-12-16 18:25 977先查那些被锁了 SELECT OBJECT_ID,SE ... -
Oracle 产生随机数
2010-11-30 09:35 1237从oracle表中随机取记录,产生随机数和随机字符串 ... -
Oracle 存储过程异常处理
2010-11-25 14:43 38391、异常的优点 如果没有异常,在程序中,应当 ... -
在存储过程中执行3种oracle循环语句
2010-11-25 14:35 1368create or replace procedure p ...
相关推荐
### SQL-SERVER-64位配置ORACLE连接-中文乱码问题 在IT行业中,不同数据库之间的连接配置是一项常见的任务,特别是在需要实现跨平台数据交换的场景下。本文将详细介绍如何解决64位系统下的SQL Server连接Oracle...
### 安装Oracle时中文乱码问题解决方案 #### 背景介绍 在进行Oracle数据库安装的过程中,很多用户会遇到中文显示为乱码的问题。这一现象不仅降低了用户体验,还可能影响到系统的正常配置与管理。本文将详细介绍如何...
Oracle数据库作为一款广泛应用的关系型数据库系统,其与Java应用程序的集成常常会遇到各种问题,其中之一就是字符编码导致的中文乱码问题。本文将深入探讨如何通过JDBC(Java Database Connectivity)连接Oracle远程...
在Oracle数据库环境中,导出数据为CSV(Comma Separated Values)格式时,有时可能会遇到中文显示为乱码的问题。这通常与字符编码不匹配有关。以下是一套详细的解决步骤和相关知识点: 1. **字符编码问题**: CSV...
总之,解决Oracle数据库的乱码问题需要深入理解字符集的工作原理,确保所有环节从输入、存储到输出都保持字符集的一致性。在处理中文数据时,选择支持汉字的字符集如GBK或UTF-8尤为重要,以确保数据的准确显示和处理...
然而,当用户在使用Oracle客户端进行PL/SQL开发时,经常遇到一个棘手的问题——中文乱码。这个问题通常出现在查询结果、日志输出或者交互式输入时,给数据库操作带来不便。本文将深入探讨这个问题,并提供解决方案。...
以上代码示例展示了如何在查询过程中处理字符串编码转换,以确保最终输出的中文数据不会出现乱码。 #### 总结 通过上述两种方法,可以有效地解决使用Qt操作Oracle数据库时遇到的汉字乱码问题。第一种方法较为简单...
在执行SQL查询时,确认SQL语句中没有使用Oracle客户端默认编码进行字符比较或者排序,以避免在结果集输出时产生乱码。 最后,解决乱码问题后,需要重启php-fpm服务使设置生效。可以通过以下命令重启服务: ```bash...
在使用EBS R12时,有时用户可能会遇到一个问题,即当尝试以Excel格式查看输出为“文本”的并发程序请求时,显示的内容会变成乱码。这通常与字符编码设置和系统配置有关。下面将详细介绍这个问题的原因以及解决方案。...
5. OracleParameter:用于在OracleCommand中传递参数,无论是执行SQL语句还是存储过程,都可以通过这个对象传递输入、输出或输入/输出参数。 在"DatabaseHelper"这个类中,通常会封装这些组件,提供一些静态或实例...
mysql 中case when 遇到乱码解决。查询语句中含有case引起中文乱码解决方法
在使用MyBatis框架进行数据...同时,通过调试和日志输出,可以进一步定位乱码的具体来源,从而采取针对性的解决措施。总的来说,解决MyBatis乱码问题的关键在于确保数据传输的每个环节都使用一致且兼容中文的字符编码。
此外,在Oracle 数据库中,输入编码为 GBK,输出编码为 UTF-8。因此,在读取规则字符串时,需要使用 UTF-8 的方式读入规则字符串。 Drools 4.0.7 中文乱码的问题可以通过使用 Janino 编译器、修改 ...
本文将深入探讨`ORDER BY`子句在Oracle中的排序机制,以及查询时根据`IN`条件顺序输出的方法。 首先,`ORDER BY`用于指定查询结果的排序方式,可以基于一个或多个列进行升序(ASC)或降序(DESC)排序。然而,...
Java 中文乱码问题是一个常见的编程困扰,尤其对于处理中文字符的Java程序而言。这个问题通常源于字符编码的不一致,即不同环节采用的字符编码标准不统一。本文将深入探讨这一问题,并提供相应的解决方案。 首先,...
在Linux环境中,SQL*Plus是Oracle数据库系统的命令行接口,用于执行SQL语句和PL/SQL块。然而,用户在使用SQL*Plus时可能会遇到一些输入问题,比如退格键和回车键导致的乱码现象。这通常是因为终端不支持某些高级的...
SQL*Plus是Oracle提供的一个命令行界面工具,允许用户执行SQL语句、PL/SQL代码,并能提供查询结果的文本输出。通过SQL*Plus可以执行包括创建表、插入数据、更新记录以及查询数据等操作。它为数据库管理员和开发人员...
它可能解析Data Pump Export的输出,提取出相关的字符集信息,并以友好的方式展示给用户。这样,数据库管理员或开发人员就可以快速确定DMP文件的原始字符集,为后续的数据导入操作做好准备。 使用这样的工具可以...
### 关于用Oracle的DBMS_XMLDOM导出XML文档编码格式UTF-8的问题总结 在处理Oracle数据库中使用DBMS_XMLDOM模块创建并导出XML文档时,经常会遇到有关文档编码格式的问题,尤其是如何确保导出的XML文档采用UTF-8编码...
- **乱码验证**:检查Oracle数据库中是否存在乱码问题,特别是针对中文或其他非英文字符。 综上所述,MySQL到Oracle的数据迁移涉及多个步骤和技术细节,需要严格按照上述流程操作,并在每个环节仔细核对,确保数据...