**日语半角片假名的字在中文数据库中乱码

ksmark 2011-12-09 12:13:51
标题相关问题,请教大家。

如标题所述,只有在日语半角状态下输入片假名,在中文的sqlserver数据库中出现乱码。
如果是全角输入片假名的话,没有乱码。

我在网上找到相关帖子说安装日语输入法2010,我安装后还是没能解决问题。

请问如何搞定它呢。。。。在线等待。。。

开发工具:C#+sqlserver2008
...全文
643 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
ksmark 2011-12-15
  • 打赏
  • 举报
回复
终极解决方案:
先把数据库字段的数据类型改成nVarchar(...)
Insert into MSTCASNO (CASNO,SeibunC,SeibunJ,SeibunE,VOC,Reach,TGUseISOK,UserID,IDate) Values('60-57-1','www',N'ディルドリン','1111111','0','0','0','test','2011-12-……

再加一个N在sql语句里面就可以了。

这样就不乱吗了,也不用改排序规则。
comszsoft 2011-12-13
  • 打赏
  • 举报
回复
我解决过类似问题,不过我处理的是韩文,我是这样处理的:
1. 首先字段改成nvarchar或者ntext;
2. 确保该表所有字段长度加起来不超过 8060,如果超过8060可能会乱码;
美到心痛 2011-12-13
  • 打赏
  • 举报
回复
你先试一下8楼的表在你系统看行不行?如果不行就是你系统的问题,如果行就是你MSTCASNO表的问题了
ksmark 2011-12-13
  • 打赏
  • 举报
回复
也不行,测试过了。
美到心痛 2011-12-13
  • 打赏
  • 举报
回复
在有日文的字段上把排序規則設為:Chinese_Taiwan_Stroke_CI_AS
ksmark 2011-12-13
  • 打赏
  • 举报
回复
在我原来的数据库中执行:
我已经弄过了,还是不行。我把那张表中的数据全部删除了。然后再设置成Japanese_CI_AS之后再追加数据,发现还是乱码。

如果新建数据库的情况下执行:
我新建一个数据库,然后只建立MSTCASNO表,然后改成Japanese_CI_AS排序方式,然后执行这个语句:Insert into MSTCASNO (CASNO,SeibunC,SeibunJ,SeibunE,VOC,Reach,TGUseISOK,UserID,IDate) Values('60-57-1','www',N'ディルドリン','1111111','0','0','0','test','2011-12-……

结果还是乱码。

偶然发现,上面那段语句拷贝到记事本中也是乱码,但拷贝到查询分析器中就是能够看到片假名的。

是不是我把记事本中的乱码解决了,数据库中的乱码也就迎刃而解了呢?
koumingjie 2011-12-12
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 koumingjie 的回复:]
引用 9 楼 mark3798 的回复:
结果:
加了N,还是不行。
语句:Insert into MSTCASNO (CASNO,SeibunC,SeibunJ,SeibunE,VOC,Reach,TGUseISOK,UserID,IDate) Values('60-57-1','www',N'ディルドリン','1111111','0','0','0','test','2011-12-……
[/Quote]

如果是修改表中某字段的排序规则,选择选Japanese就行,点击保存会提示---“tb”表
- 列“person”: 警告: 在代码页之间更改排序规则可能导致数据丢失。
之类的提示,如果不怕数据丢失,选择【是】
最好表中没有数据
koumingjie 2011-12-12
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 mark3798 的回复:]
结果:
加了N,还是不行。
语句:Insert into MSTCASNO (CASNO,SeibunC,SeibunJ,SeibunE,VOC,Reach,TGUseISOK,UserID,IDate) Values('60-57-1','www',N'ディルドリン','1111111','0','0','0','test','2011-12-9 14:04:03')

8楼的我数据……
[/Quote]

在数据库上右键(注意是数据库),"属性" ->"选项" -修改排序规则

ksmark 2011-12-12
  • 打赏
  • 举报
回复
我选择了【Japanese 】了,但是运行后错误,恢复后可以运行的。

因为其它表都设置默认的中文排序规则。

恳请高人求助。。。
koumingjie 2011-12-12
  • 打赏
  • 举报
回复
你是不是数据库中有数据已经是乱码了?已经是乱码的数据改完排序规则也没用
koumingjie 2011-12-12
  • 打赏
  • 举报
回复
你可以重新建个数据库,重新建一张表测试一下
koumingjie 2011-12-12
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 mark3798 的回复:]
用16楼的方法,还是不行啊。

所有可行的方案都测试过了,还是不行。只要是半角日文输入,保存到中文sql2008就乱码。

继续等。。。。
[/Quote]

我的数据库也是中文版的,就可以
你先把表删了,再把数据库的排序规则修改成Japanese_CI_AS(在数据库上右键(注意是数据库),"属性" ->"选项" -修改排序规则),然后在重新建表,插入数据试试吧,不然我也没有办法了,你在问问其他人吧
ksmark 2011-12-12
  • 打赏
  • 举报
回复
用16楼的方法,还是不行啊。

所有可行的方案都测试过了,还是不行。只要是半角日文输入,保存到中文sql2008就乱码。

继续等。。。。
ksmark 2011-12-12
  • 打赏
  • 举报
回复
问题是取出来的时候也不知道怎么弄才不乱码。
我不通过查询分析器,我直接打开数据库中的表也显示乱码。这个怎么办啊。

项目交不了了。。。。。

在线等啊。。。。
Rotel-刘志东 2011-12-12
  • 打赏
  • 举报
回复
set language '日本語'
guguda2008 2011-12-12
  • 打赏
  • 举报
回复
有时候在数据库中显示乱码并不代表存储的数据错误,而可能是你在查询分析器中使用的编码不对。如果用程序输出时编码显示正常,就可以不用太纠结数据库的显示问题了。
ksmark 2011-12-12
  • 打赏
  • 举报
回复
晕,按照您的方法改了,还是不行。
难道还有哪里设置有问题的啊。
我是sql2008中文版。
顺便问一下,
我这么一设置对数据库中其它表中的中文有无大碍?
中国风 2011-12-09
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 mark3798 的回复:]

没有加,加了的话,对正常输入的全角有没有影响啊。
我要测试一下先。。。
[/Quote]

加上N'',應該可以的
中国风 2011-12-09
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 qianjin036a 的回复:]

先执行:
SQL code
set language to '日本語'
[/Quote]
--語法不正確去掉to
set language '日本語'
ksmark 2011-12-09
  • 打赏
  • 举报
回复
没有加,加了的话,对正常输入的全角有没有影响啊。
我要测试一下先。。。
加载更多回复(7)

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧