现在有个项目遇到UTF-8编码问题,JSP(UTF-8)--SQL SERVER 2000 (nchar,nvarchar 内部是UCS-2 编码)请求发送都采用UTF-8,UTF-8和UCS-2是两种不同的UNICODE编码方式,所以这样开发完成的时候,发现UTF-8的页面并不能支持所有的语言输入显示,例如数据库在简体操作系统上安装,简体输入显示没有问题,数据库里存储正常,但是如果是输入繁体字符,韩语日语字符,输入后显示的是乱码,数据库里存储的也是乱码。
查找资料发现UCS-2是两个字节的UNICODE编码,UTF-8是三个字节的UNICODE编码,如果按照这样的编码流程,页面过来的UTF-8不能自动的转换成UCS-2编码,如果是ASP,可以通过设置ASP页面的CODE PAGE 和IIS 的一些参数解决,但是在JAVA里面这个问题变得棘手,目前我能想到的解决方案有两种:
1 JSP页面采用等价于UCS-2编码,请求发送也采用这种编码,这样前后台统一就可以支持多种语言的输入显示。从目前我从网上找到的资料来看,此路不通。
2 在程序里对nvarchar,nchar字段,做转码操作,入库的时候UTF-8 -> UCS-2,出库的时候
UCS-2 -> UTF-8,但是目前还找不到这样的转码API。
我做过的其他项目采用ORACLE数据库,它安装的时候就能指定AL32UTF-8,前后台统一,支持多语言很顺畅,没想到SQL SERVER 系列支持UNICODE 居然采用UCS-2编码,大家有什么高见,在目前的数据库环境下,有更好的处理方式吗?
分享到:
相关推荐
UCS-2转换为UTF-8代码集完整版 UCS-2(Universal Character Set 2)是一种 Unicode 编码形式,用于表示 Unicode 字符。UTF-8(Unicode Transformation Format 8)是一种 Unicode 编码形式,用于将 Unicode 字符转换...
4. **解析复杂性**:UTF-8的解析相对较复杂,因为需要识别字节序列以确定字符长度,而UNICODE的解析相对简单,每个字符都有固定的字节数(在UCS-2或UCS-4中)。 **四、UNICODE与UTF-8的转换** 1. **UNICODE到UTF-8...
- 当UCS-2编码的字符位于U+0000到U+007F范围内时,UTF-8编码与UCS-2完全相同。 - 对于UCS-2编码的字符在U+0080到U+007FF范围内的,UTF-8使用两个字节编码。 - U+00800到U+FFFF范围内的UCS-2字符,UTF-8使用三个字节...
身份证读卡器生成的基本信息TEXT文件,由于是采用 GB 13000 的 UCS-2 编码格式,java读取出来是乱码,这个段代码就是解决转码问题的,亲测可用
3. **Unicode**:Unicode是一种标准,旨在为世界上所有的字符提供统一且唯一的数字表示形式,通常以UCS-2或UCS-4的形式存储,分别使用2个或4个字节表示一个字符。这里我们关注的是UCS-2,即每个字符使用2个字节表示...
在C++中,可以使用`wchar_t`数据类型来存储Unicode字符,尤其是在Windows平台上,它通常与UCS-2编码兼容,即每个字符占16位。 UTF-8则是一种变长的字节编码方案,它可以表示Unicode中的所有码点。UTF-8的特点是,...
UTF-8(UCS Transformation Format - 8 bit),则是一种基于Unicode的多字节编码方式。Unicode 包含了世界上几乎所有的字符集,包括ASCII在内的多种字符集。UTF-8 最大的特点是其编码规则是可变的,它可以使用1到4个...
在这个主题中,我们将深入探讨如何在C语言中进行UNICODE、GBK和UTF-8之间的转换。 UNICODE,也称为Unicode Transformation Format(UTF),是一种标准的字符编码,旨在表示世界上所有语言的每一个字符。它使用数字...
UTF-8的全称是“8位无符号字符转换格式”(UCS Transformation Format - 8 bit)。每个Unicode字符在UTF-8中可以由1到4个字节表示。简单来说,对于ASCII字符(包括英文、数字和一些特殊符号),UTF-8编码与ASCII...
SDL_iconv 用于转换字符编码的库。... UCS-2-INTERNAL UCS4 UCS-4 UCS-4LE UCS-4BE UCS-4-INTERNAL SDL_iconv.c是一部分。 我做了一些修改以构建没有完整SDL库的SDL_iconv.c。 许可下的许可。
Visual Basic中的字符串是Unicode字符串(UCS-2或UTF-16)。如果需要将这些字符串转换为UTF-8,可以使用`Encoding`类的`GetString`和`GetBytes`方法: ```vbnet Dim utf8Bytes As Byte() = System.Text.Encoding....
其次,USC2(Unicode,UCS-2)是Unicode标准的一个早期版本,它使用固定宽度的16位编码,可以表示65536个不同的字符,涵盖了大部分世界上常用的语言文字。USC2是Unicode的一种变体,它不包含扩展的辅助平面,因此...
Unicode 字符的 UTF-8、UTF-16、UTF-32 编码方式 Unicode 字符集是计算机上使用的一种字符编码,它为每种语言中的每个字符设定了统一并且唯一的二进制代码,以满足跨语言、跨平台进行文本转换、处理的要求。Unicode...
UTF-8、UNICODE(也称为UCS-2或UTF-16)和GBK是三种常见的字符编码标准,它们在处理多语言文本时各有特点。本文将深入探讨这些编码方式,以及如何在C语言中进行相互转换。 首先,UTF-8是一种变长编码,它使用1到4个...
Unicode详解(UTF-8,UTF16,UCS)
6. Unicode的UCS-2编码方式 7. PHP语言在UTF-8和Unicode编码转换中的应用 本文档对UTF-8和Unicode的编码特征进行了详细的分析,并使用PHP语言实现了UTF-8和Unicode编码之间的转换函数,从而获得了使用PHP实现UTF-8...
UCS-2类似于早期Unicode的16位编码,而UCS-4则提供了更大的编码空间,能够表示Unicode的所有字符。 UTF(Unicode Transformation Format)是一系列将Unicode字符转换为字节序列的编码方式,以便在网络传输、文件...
3. **转换为Unicode**:将GB2312字符串转换为Unicode(UCS-2)编码,因为UTF-8是基于Unicode的。 4. **编码为UTF-8**:将Unicode字符串编码为UTF-8格式,可以使用VB的内置函数或其他第三方库完成。 5. **写入UTF-8...
2. UTF-8编码:UTF-8是Unicode Transformation Format的缩写,是一种变长的Unicode编码方式。它可以表示Unicode字符集中所有的字符,包括各种语言的特殊字符。UTF-8的最大特点是兼容ASCII编码,前128个字符(0-127)...
在Linux C编程中,字符编码主要涉及Unicode和UTF-8标准。Unicode是一个广泛采用的字符集,它包含世界上几乎所有的文字系统,而UTF-8是Unicode的一种编码方式,具有良好的向后兼容性和易于处理的特性。 UTF-8编码在...