现在有个项目遇到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编码,大家有什么高见,在目前的数据库环境下,有更好的处理方式吗?
分享到:
相关推荐
身份证读卡器生成的基本信息TEXT文件,由于是采用 GB 13000 的 UCS-2 编码格式,java读取出来是乱码,这个段代码就是解决转码问题的,亲测可用
将ucs-2转换为utf-8代码集完整版
UTF-8 GB2312 UCS 码详细说名以及其转代码
SDL_iconv 用于转换字符编码的库。... UCS-2-INTERNAL UCS4 UCS-4 UCS-4LE UCS-4BE UCS-4-INTERNAL SDL_iconv.c是一部分。 我做了一些修改以构建没有完整SDL库的SDL_iconv.c。 许可下的许可。
Unicode详解(UTF-8,UTF16,UCS)
字符编码转换的工具(根据3GPP 03.38,11.11附录等协议),可以把字符转换成ascii,8 bit,7 bit,UCS2,UTF-8编码。 在做手机软件开发的时候,调试WMS,Phone book,STK等模块可能会用的到。
很多人喜欢用CString 或std:string,但是他们的缺点是不能完成汉字各种类型之间的转换,提供三种类库ascString,ucsString,utfString以及工具utfCount,utf8_ucs2_t,tcf8_ucs4_t类库,用于各种字符串之间的直接转换`...
详细描述UTF8和UCS2的 编码规则,并附带互相转换的c++源代码
C++ utf-8库 LIB文件及头文件
这个压缩包是采用C语言书写的,可以将UTF-8编码转成Unicode编码,再转成国标GB18030编码
将Unicode值转换为utf-8(UCS-3)值。 在网站链接的页面底部查看汇编语言版本。
各种编码规则及用法介绍,便于开发人员对其概念的理解。
Text、ansi、unicode、unibigend、UTF-8、UTF-7之间的编码转换 汉字转ucs2格式
汉字UCS-2编码表.doc
GB2312,UTF8,UCS2汉字编码生成与转换
行业资料-交通装置-UCS车辆远程追踪控制系统.zip
ucs2/7bit/8bit/ASCII/ UTF-8与中文(英文)间自由切换,粘贴自动切换。对短信开发有用。
utf-8 库,包括ascString ucsString utfString utfCount utf8_ucs2_t utf8_ucs4_t等,更新后提供LIB和.a文件两个类库,支持跨平台
处理UTF-8,UTF-16BE,UTF-16LE; (可选)将DOS或Windows代码页或HP-Roman8中的常用字符转换为ISO-8859-1。 UCS字符可以映射到8位转换字符串。 单个ISO C源文件“ 8conv.c”。 可以通过配置文件控制翻译,示例文件...
Java号称国际化的语言,是因为它的class文件采用UTF-8,而JVM运行时使用UTF-16。因此java用的都是Unicode。 unicode 的目标就是能支持世界上所有的字符集,也就是说几乎所有的字符集包含的字符在unicode中都有对应的...