起步软件技术论坛-X3

 找回密码
 立即注册
搜索
楼主: lily

平台unicode字符设置问题**

[复制链接]
 楼主| 发表于 2009-2-18 17:23:21 | 显示全部楼层
对于oracle来说,如果是设计为nvarchar2的类型,那么不论数字还是中文都是按1:1来存放的,不知道平台跟这个有什么差异?
回复 支持 反对

使用道具 举报

发表于 2009-2-18 17:24:55 | 显示全部楼层
我看网上有说的是utf8字符集下,一个汉字要占3个字节的。
这个跟平台没有关系,应该是与oracle本身有关
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-2-18 17:26:10 | 显示全部楼层
这个问题跟我开始问的那个问题是有关系的,所以请不要让我重新开贴了,希望能尽快得到答复
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-2-18 17:28:46 | 显示全部楼层
对于oracle来说,如果是设计为nvarchar2的类型,那么不论数字还是中文都是按1:1来存放的,不知道平台跟这个有什么差异?

如果跟平台没有关系的话,那么如果我在平台上设计为isunicode(2000)位,应该也存放2000位长度的字符串啊,但是现在不行的嘛
回复 支持 反对

使用道具 举报

发表于 2009-2-18 17:39:41 | 显示全部楼层
楼主,首先要明确一点:字符数与字节数是不一样的。
对于nvarchar2(2000),这里的2000是字节数,不是字符数。
unicode字符集下,对于汉字和字母占用的字符是1:1,注意这里是字符。对于一个字符占用多少个字节是不一定的。(一般来说unicode下,一个字符数占用2-3个字节,最多4个)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-2-19 09:37:49 | 显示全部楼层
今天继续吧,昨天我看了一些资料,总结了一下:1、如果是在oracle数据库中直接创建nvarchar2(2000)这个2000是指的字符数而非字节数最大可以存4000字符,并且中文和英文都是按双字节来存取的;2、而在平台中,如果设置datatype为字符,size为2000,在数据库中虽然创建的也是nvarchar(2000)实际上数据库中是可以存取2000字符的,但是平台这端的2000实际指的是2000字节,所以按照unicode2-3个字节来存取,也就存不了2000个字符了;3、那么平台的字符类型设计的最大长度就是2000字节吗?也就是说平台限制了这个长度。不知道以上我的理解是正确的吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-2-19 09:41:02 | 显示全部楼层
如果我希望平台的字符类型能够输入4000字符,也就是说至少要设计size为8000,但是创建的时候报数据字段过长,不能创建,因为如果能够输入4000字符就能够满足我们的大部分需求了。是否是我的设置有误?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-2-19 10:00:16 | 显示全部楼层
问题还没有解决,抽空回复一下啊
回复 支持 反对

使用道具 举报

发表于 2009-2-19 10:07:41 | 显示全部楼层
楼主,你试试把平台逻辑表的字段大小改成8000,但是不要创建物理表。
物理表字段大小,你直接在数据库中设置成4000
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-2-19 10:21:11 | 显示全部楼层
哦,好的,我试下
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-26 19:56 , Processed in 0.039395 second(s), 12 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表