Oracle中文排序问题】的更多相关文章

默认感觉中文是按拼音排序,如果没实现效果,请加上其它排序,例如日期 表名为 dept ,其中name字段是中文,下面分别实现按照单位名称的笔划.部首和拼音排序.1: //按照笔划排序2: select * from dept order by nlssort(name,'NLS_SORT=SCHINESE_STROKE_M');3: //按照部首排序4: select * from dept order by nlssort(name,'NLS_SORT=SCHINESE_RADICAL_M')…
mysql中文排序有convert(name using gbk)这样的函数,于是研究了一下oracle中文排序: 使用拼音排序 SQL> select * from chineseordertest order by nlssort(name,'NLS_SORT=SCHINESE_PINYIN_M'); NAME ---------------------------------------- A语言 汉文 日文 中文 使用笔画排序 SQL> select * from chineseord…
在配置文件中,一般会用以下配置: 'db_oracle'=>array( 'class' => 'CDbConnection', 'connectionString'=>'oci:dbname=服务器地址/服务名', 'username'=>'用户名', 'password'=>'密码', 'charset' => 'utf8', 'enableParamLogging'=>true, ), 我试了千万遍,找了N久的资料,就是不行,在thinkphp中发现也没有什…
导言:sqlite3默认的编码方式为UTF8编码,而在UTF8编码下,中文不是按照拼音顺序编码的,所以想解决中文排序问题,必须自定义排序规则,将UTF8编码转换成GB2312编码(GB2312编码中文是按照拼音顺序编码的),然后再进行比较大小,就可以得到正确的排序结果了. #include "sqlite3.h" #include <Windows.h> #include <string> #include <vector> using std::v…
首先,需要保证oracle客户端服务器的字符集是一样的,并且保证该字符集支持中文.你可以使用plsql查看是否乱码. 代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data.OleDb; namespace Oracle中文 { class Program { static void Main(string[] args) { Conso…
cx_oracle访问处理oracle中文乱码问题 问题描述 使用docker打包了centos镜像,编码为gbk,随后访问oracle出现了很多乱码.其原因自然是因为编码不一致,服务器为zhs16gbk,按理说客户端也是gbk应该可以,但是不知道为什么. 解决办法 找了多种方式,最终使用下面这个方式处理好了: 将dockerfile中设置编码的地方按照如下处理: RUN yum -y install kde-l10n-Chinese \ && yum -y reinstall glibc…
toad for oracle中文显示乱码 数据入库的时候中文显示正常,在toad for oracleclient和页面显示都是乱码!!! 原因:在数据入库时候出现的问题. 解决方式: 在系统变量中添加:变量名:NLS_LANG   变量值:AMERICAN_AMERICA.ZHS16GBK 然后重新启动toad for oracle 就显示正常了.之前插入的乱码数据删除,新增的正常显示(client显示正常.页面显示正常).…
asp.net oracle 中文乱码 解决方法 不需要去修改oracle以及client的字符集,只需要在web.config中连接字符串上加上 Unicode=True 问题解决. <add key="connstring" value="Data Source=TESTDB;user id=username;password=password;Unicode=True"/> <add name="ConnectionString&q…
Oracle 中查询结果按照某个中文字段或者英文字母(包括 符号)排序,并不会得到我们预期的结果,因为对于中文与英文字母及符号,Oracle实际是按照其对应的ASCII码值排序的! 可以看到按照中文村名排序并没有按照我们预期,按照村名的拼音字段排序,也是一样(实际是按照其对应的ASCII码值排序)! 当然,Oracle也提供了按照中文拼音排序,按照部首或笔画排序,方式如下: 按照拼音顺序:ORDER BY nlssort(NAME, 'NLS_SORT=SCHINESE_PINYIN_M') 按…
最近迁移一个.net应用系统从32位Windows2003升级到64位的Windows2008中,发现所有涉及中文的内容插入到Oracle数据库中都变为?,最开始以为是2008系统的字符集与Oracle数据库中得不一致,检查发现NLS_LANG都是SIMPLIFIED CHINESE_CHINA.ZHS16GBK,是一致的. 网上狂找一遍,基本提供的思路都是设置客户端与数据库端字符集一致的方式,问题是我这已经是一致了,问题还是没解决. 几经折腾,无意间设置了数据库连接字符串字符集,问题居然得到解…
客户端NLS_LANG的设置方法 Windows: # 常用中文字符集set NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK # 常用unicode字符集 set NLS_LANG=american_america.AL32UTF8 可以通过修改注册表键值永久设置 HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOMExx\NLS_LANG 或者设置环境变量  NLS_LANG Unix: # 常用unicode字符集 export…
在用PL/sql查询时,中文显示为问号.经查证,发现问题为oracle字符集不支持中文导致的.修改oracle字符集,改为支持中文即可. 方法: 第一步:修改注册表. 开始-运行-输入regedit-回车进入注册表,依次单击HKEY_LOCAL_MACHINE--->SOFTWARE ---> ORACLE--->KEY_OraDb11g_home1(不同版本的Oracle显示的都不太一样,但都会包含home这个单词),找到“NLS_LANG”,查看数值数据是否为:“SIMPLIFIED…
用OracleDataAccess.dll访问oracle数据库,遇到中文乱码的情况. 解决方案如下: 1查看字符集编码, 在数据库服务器端 启动 sqlplus SQL->select userenv('language') from dual 查询结果如:SIMPLIFIED CHINESE_CHINA.ZHS16GBK 2 在系统的环境变量里面加了个NLS_LANG值也是SIMPLIFIEDCHINESE_CHINA.ZHS16GBK 3 如果不进行第二步,在程序启动时调用以下代码亦可实现…
以下转自 http://blog.itpub.net/29151695/viewspace-1173238/ 最近在linux上安装完oracle 10gR2后,又遇到了字符集乱码的问题,之前在网上找了下,然后解决完后就不了了之了,这次又碰到此类问题,所以就认真下来花点时间去测试了一番,经过一些测试,现在已经解决了问题,现在把自己遇到的问题和解决方法记录一下,方便自己日后查找. 测试环境如下: 测试平台: VMware? Workstation 9.0.2 build-1031769 (注:VM…
针对各主流数据mysql.sqlserver.oracle当以编码格式gbk存放数据时,要注意字符串类型的字段,要采用宽字符串nvarchar存放,前提是当你的应用程序是utf8编码,而数据库是gbk编码, 尤其是某个字符串字段以varchar存放时会出现乱码,即使你在数据库连接串中声明;charset=utf8无济于事,虽然在php中设置后能显示中文,但是字符串被截断,而且会弹出橘黄色经典报错页面,这是php引擎的一个bug.尤其针对中文这种宽字符的尽量采用n开头的数据类型来定义字段.…
这个问题是我刚踏入工作觉得最坑的一个问题,找了很多方法.也问过不少人,但还是没能解决,偶然间返现了新大陆.... 具体问题描述是这样的: 我可以读取Oracle数据库中已有的中文内容,并能正确显示(Oracle中的中文通过SQLplus录入),但当我使用C#程序插入中文记录时,发现数据库中显示为乱码,读取出来也为乱码.我试了很多种编码方式,问题都不能解决. 以下是查找相关资料得到的解决办法: 主要问题是: oracle客户端软件的字符编码与服务器端的字符编码不一致造成的. oracle的字符编码…
AMERICAN_AMERICA.WE8ISO8859P1,这个字符编码是西欧字符编码,对应于.Net的就是iso-8859-1字符编码,所以只需要改到系统的默认字符编码就行了. 解决方法: (1) 服务器端重新安装ORACLE 在重新安装ORACLE 时选择与原卸出数据一致的字符集(本例为US7ASCII). 加载原卸出的数据. 这种情况仅仅使用于空库和具有同一种字符集的数据. (2) 写一个函数: 代码如下 复制代码 /**//// <summary> /// 将西欧字符编码转换成GB23…
提示oracle客户端无法连接指定字符 安装好客户端之后,如图 将数据库dbhome_1中的network文件夹全部复制到客户端,如图 然后在设置环境变量:F:\app\Administrator\product\11.2.0\instantclient_11_2 第二种方法:本人使用的第二种方法 果断放弃.net自带的ole db 的连接方式[这种方式太容易出现中文乱码错误],改为oracleClient的连接方式[oracle官网有提供的引用文件,或者使用Nuget搜索“Oracle.Man…
经常可能出现查询Oracle数据时,中文显示乱码,这很可能是因为,Oracle服务端的字符编码与客户端不一致引起的. 这时,我们需要做的是,如何设置自己的客户端字符编码与服务端一致. 查询Oracle服务端字符编码 --AMERICAN_AMERICA.ZHS16GBK select userenv('language') from dual; 这时,可以通过以下命令临时设置本次命令行模式使用其字符编码: set nls_lang=AMERICAN_AMERICA.ZHS16GBK 当然也可以通…
FYI由于历史的原因,早期的oracle没有中文字符集(如oracle6.oracle7.oracle7.1),但有的用户从那时起就使用数据库了, 并用US7ASCII字符集存储了中文,或是有的用户在创建数据库时,不考虑清楚,随意选择一个默认的字符集,如WE8ISO8859P1或US7ASCII,而这两个字符集都没有汉字编码,虽然有些时候选用这种字符集好象也能正常使用,但用这种字符集存储汉字信息从原则上说就是错误的,它会给数据库的使用与维护带来一系列的麻烦.正常情况下,要将汉字存入数据库,数据库…
我刚刚在linux下安装oracle时就碰到这个问题,查了半天知道问题是oracle的字符集不对. 解决方法是dbca进入图形界面,删去现有的库,重建新库. 建库时注意: 1,dbca创建, 选第一项(自定义    custom Database) 2,进入memory界面时,charsets选项选择 zh_16GBK 这次我在帮一哥们儿处理这个问题时,竟让他彻底删除oracle,再建库.完全没必要,搞得后来他又重装系统,不好啊. 这星期六,我自己把oracle彻底删除.然后安装一个空的orac…
乱码问题的根源是字符集的修改 1.查看linux的默认语言 2.查看客户端的语言编码设置 配置文件中的配置: cat  ~/.bash_profile 注意修改配置信息: export PATHexport ORACLE_HOME=/usr/lib/oracle/11.2/client64/export LD_LIBRARY_PATH=:$ORACLE_HOME/lib:/usr/local/lib:$LD_LIBRARY_PATH:.export TNS_ADMIN=$ORACLE_HOMEe…
在/etc/profile.d/简历oracle.sh 内容如下在NLS_LANG设置编码 ORACLE_HOME=/usr/lib/oracle/12.1/client64 C_INCLUDE_PATH=/usr/include/oracle/12.1/client64 LD_LIBRARY_PATH=$ORACLE_HOME/lib #remember this is the client NLS_LANG not the server one NLS_LANG=FRENCH_FRANCE.…
先扩展datatable的的排序功能,添加一个自定义排序函数 //为jq datatable 自定义中文排序 jQuery.fn.dataTableExt.oSort['chinese-sort-asc'] = function(s1,s2) { return s1.localeCompare(s2); }; jQuery.fn.dataTableExt.oSort['chinese-sort-desc'] = function(s1,s2) { return s2.localeCompare(…
中文乱码问题解决:1.查看服务器端编码select userenv('language') from dual;我实际查到的结果为:AMERICAN_AMERICA.ZHS16GBK2.执行语句 select * from V$NLS_PARAMETERS 查看第一行中PARAMETER项中为NLS_LANGUAGE 对应的VALUE项中是否和第一步得到的值一样.如果不是,需要设置环境变量.否则PLSQL客户端使用的编码和服务器端编码不一致,插入中文时就会出现乱码.3.设置环境变量计算机->属性…
mysql中文排序,用到的是: SELECT id id, billId billId, namespec nameSpec, unit unit, amount amount, price price, remark remark, alias alias, materialType materialType FROM project_materials WHERE billId = 'TLD20151028162729584' ORDER BY CONVERT(nameSpec USING…
---- 1.原因分析 ---- 通过对用户反映情况的分析,发现字符集的设置不当是影响ORACLE数据库汉字显示的关键问题.那么字符集是怎么一会事呢?字符集是ORACLE 为适应不同语言文字显示而设定的.用于汉字显示的字符集主要有ZHS16CGB231280,US7ASCII,WE8ISO8859P1等.字符集不仅 需在服务器端存在,而且客户端也必须有字符集注册.服务器端,字符集是在安装ORACLE时指定的,字符集登记信息存储在ORACLE数据库字典的V$ NLS_PARAMETERS表中;客户…
1.查看服务器端编码select userenv('language') from dual;我实际查到的结果为:AMERICAN_AMERICA.ZHS16GBK 2.执行语句 select * from V$NLS_PARAMETERS 查看第一行中PARAMETER项中为NLS_LANGUAGE 对应的VALUE项中是否和第一步得到的值一样.如果不是,需要设置环境变量.否则PLSQL客户端使用的编码和服务器端编码不一致,插入中文时就会出现乱码. 3.设置环境变量计算机->属性->高级系统…
查看当前Oracle字符集 select userenv('language') from dual; USERENV('LANGUAGE') ---------------------------------------------------------------------------------------------------- AMERICAN_AMERICA.AL32UTF8 查询当前终端的NLS_LANG环境变量 echo $NLS_LANG NLS_LANG为空 设置NLS…