mssql 中文字符处理(字符集编码和排序规则)

 mssql 中文字符处理(字符集编码和排序规则)
sqlserver中文处理涉及到字符集编码和排序规则,是个非常纠结的问题。

sql code

--ascii字符
select n,x=cast(n as binary(2)),u=nchar(n) from nums where n between 32 and 126
--unicode中文字符
select n,x=cast(n as binary(2)),u=nchar(n) from nums where n between 19968 and 40869
19968    0x4e00    一
40869    0x9fa5   
--以下两个条件用来判断字符串是否包含汉字
like n'%[-]%' collate chinese_prc_ci_as
like n'%[一-]%' collate chinese_prc_bin
--这是因为在以上两种不同的排序规则下,汉字的排列顺序是不同的。
--中文全角标点符号
select n,x=cast(n as binary(2)),uq=nchar(n),ub=nchar(n-65248) from nums where n between 65281 and 65374
select nchar(12288),nchar(32)
65281    0xff01    !    !
65374    0xff5e    ~    ~
--以下条件用来判断字符串是否包含全角标点
like n'%[!-~]%' collate chinese_prc_bin

全角半角标点的转换:

sql code
--full2half
create function [dbo].[full2half](
@string nvarchar(max)
)
returns nvarchar(max)
as
/*
全角(fullwidth)转换为半角(halfwidth)
*/
begin
    declare @chr nchar(1)
    declare @i int
    set @string = replace(@string,n' ',n' ')
    set @i = patindex(n'%[!-~]%' collate latin1_general_bin,@string)
    while @i > 0
    begin
        set @chr = substring(@string,@i,1)
        set @string = replace(@string,@chr,nchar(unicode(@chr)-65248))
        set @i = patindex(n'%[!-~]%' collate latin1_general_bin,@string)
    end
    return @string
end
go
create function [dbo].[half2full](
@string nvarchar(max)
)
returns nvarchar(max)
as
/*
半角(halfwidth)转换为全角(fullwidth)
*/
begin
    declare @chr nchar(1)
    declare @i int
    set @string = replace(@string,n' ',n' ')
    set @i = patindex(n'%[!-~]%' collate latin1_general_bin,@string)
    while @i > 0
    begin
        set @chr = substring(@string,@i,1)
        set @string = replace(@string,@chr,nchar(unicode(@chr)+65248))
        set @i = patindex(n'%[!-~]%' collate latin1_general_bin,@string)
    end
    return @string
end
go

时间: 2024-07-31 21:34:37

mssql 中文字符处理(字符集编码和排序规则)的相关文章

MYSQL创建数据库时候直接指定编码和排序规则

MYSQL创建数据库时候直接指定编码和排序规则 mysql 创建数据库时指定编码很重要,很多开发者都使用了默认编码,但是我使用的经验来看,制定数据库的编码可以很大程度上避免倒入导出带来的乱码问题. 我们遵循的标准是,数据库,表,字段和页面或文本的编码要统一起来很多mysql数据库工具(除了phpmyadmin,我偶尔用,功能强速度慢)都不支持创建时指定数据库编码,当然可以改my.ini来解决这个问题,但是需要重新启动mysql,不过用下面的语句会更有效 GBK: create database

包含中文字符的URL编码问题_XML/RSS

在xml应用中,经常将一些URL信息作为xml数据存储,其中URL参数有可能包含有中文字符.当使用dom对xml数据进行解析时,可以对中文字符进行编码.但如果只使用xslt来显示xml数据时(data.xml+data.xsl),发现此时的URL会出现编码错误.即使指定编码类型(encoding="gb2312"),依然会出现同样的问题.测试发现:是IE的缓存机制问题,IE仍会把新的页面(所链接的URL)的MIME内容类型默认为text/xml 解决方法:1.指定输出文档类型为xml文

两个不同字符编码的java web网站交互中文字符如何处理乱码?

问题描述 两个不同字符编码的java web网站交互中文字符如何处理乱码? 例如:从GBK编码的网站提交中文字符到UTF-8编码的网站,接收到的中文就是乱码,怎么解决乱码问题? 解决方案 进行编码转换http://www.sharejs.com/codes/java/5422 解决方案二: 在UTF-8的页面先对GBK的字符串进行转码,具体转码方法太多了,就不一一介绍了

php不转义中文字符的 json编码方法

  虽说最新的 PHP 5.4 已经良好支持 JSON 中文编码,即通过 JSON_UNESCAPED_UNICODE 参数,例如: json_encode("中文", JSON_UNESCAPED_UNICODE)对于早前 PHP 版本,处理不转义中文字符的 json 编码,之前写过 PHP 输出中文 JSON 字符串这篇文章,这里分享个更完美的方法: /** * 不转义中文字符的 json 编码方法 * @param array $arr 待编码数组 * @return strin

php中不转义中文字符的 json 编码方法

虽说最新的 PHP 5.4 已经良好支持 JSON 中文编码,即通过 JSON_UNESCAPED_UNICODE 参数,例如: json_encode("中文", JSON_UNESCAPED_UNICODE)对于早前 PHP 版本,处理不转义中文字符的 json 编码 PHP 和 JavaScript 交互其实很方便,PHP 原生也提供了对 JSON 格式的支持.主要包括 JSON 编码和解码两个函数: json_endoce: http://cn.php.net/json_enc

Java中的字符集编码入门(三) GB2312,GBK与中文网页

GB2312是对中国的开发人员来说很重要的一个词汇,它的来龙去脉并不需要我在这里赘述,随便Goolge之便明白无误.我只是想提一句,记得前一节说到编码字符集和字符集编码不是一回事,而有的字符集编码又实际上没有做任何事,GB2312正是这样一种东西! GB2312最初指的是一个编码字符集,其中包含了ASCII所包含的英文字符,同时加入了6763个简体汉字以及其他一些ASCII之外的符号.与Unicode有UTF-8和UTF-16一样(当然, UTF-8和UTF-16也没有被限定只能用来对Unico

字节、编码、字符、字符集

1.2 字符,字节,字符串 理解编码的关键,是要把字符的概念和字节的概念理解准确.这两个概念容易混淆,我们在此做一下区分:   概念描述 举例 字符 人们使用的记号,抽象意义上的一个符号. '1', '中', 'a', '$', '¥', -- 字节 计算机中存储数据的单元,一个8位的二进制数,是一个很具体的存储空间. 0x01, 0x45, 0xFA, -- ANSI 字符串 在内存中,如果"字符"是以 ANSI 编码形式存在的,一个字符可能使用一个字节或多个字节来表示,那么我们称这

使用Java将中文字符转换成Unicode编码

  这两天操作XML使用到了Jdom,在创建XML文件并输出到硬盘的时候遇到一个中文编码的问题:Jdom默认输出的XML编码是UTF-8,但是文档中如果出现中文字符那么该中文字符就会变成乱码,造成XML文件无法被正确解析. UTF-8应该是可以用来表示中文的吧?我不知道这是不是Jdom的一个BUG(Jdom 1.0,beta了10次的产物哦!).我google了一下,大家解决这个问题的办法无非是把Jdom的输出字符集改为GBK或者GB2312,但是这样就会有一些副作用,如果在没有特定字符集(GB

你不知道的 字符集和编码(编码字符集与字符集编码)

原文:你不知道的 字符集和编码(编码字符集与字符集编码) 我的上篇文章,有朋友提出字符集和编码的区别,我在此立文和大家讨论下 常说的字符集和编码区别,其实就是编码字符集和字符集编码的区别,其实,单单如果只是说字符集,没有任何编码的概念的话,那么字符集其实仅仅是一个简单的字符的集合,或者说是一个抽象的字符的集合,包括文字,符号等等,不参与任何存储形式,只是存在这么各种各样标准的字符的集合 如果仅仅是抽象的字符集,我们是无需拿出讨论的,因为没有任何异议,通俗易懂,而常说的字符集指的编码字符集,比如常