繁体系统,简体输入保存后显示乱码问题

djf_1985 2009-04-03 08:50:02
程序是繁体,输入繁体保存到数据库,然后显示没有问题。
如果输入简体,保存在数据库中,存入的就是乱码。从数据库中读取时有个简体的SQL函数CONVERT2UNICODE进行转换,但显示出来的还是乱码
数据库数据类型是nvarchar

PS:在ASP程序中,是繁体的,页面设置编码为big5,保存到数据库,用CONVERT2UNICODE函数转换下就能显示了,同样设置用于ASP.NET下的程式却不行

怎么能解决简体乱码不是显示问题呢?


SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER FUNCTION [dbo].[CONVERT2UNICODE](@input_string varchar(1000))
returns nvarchar(2000)
as
BEGIN
declare
@input_string1 varchar(1000),
@output_string nvarchar(2000),
@unicode int,
@a int,
@i int,@j int,@k int
set @output_string=''
SELECT @a=PATINDEX('%&#%',@input_string)
if @a > 0
begin
set @i=1
while charindex('&#',@input_string,@i)>0
begin
set @j=charindex('&#',@input_string,@i)
set @output_string=@output_string+substring(@input_string,@i,@j-@i)
set @k=charindex(';',@input_string,@j)
if @k>0
begin
set @unicode=substring(@input_string,@j+2,@k-@j-2)
set @output_string=@output_string+nchar(@unicode)
end
set @i=@k+1
end
if @i<=len(@input_string)
begin
set @output_string=@output_string
+substring(@input_string,@i,len(@input_string)-@i+1)
end
set @output_string= @output_string
end
else
set @output_string= @input_string

RETURN @output_string
End
...全文
361 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
djf_1985 2009-04-03
  • 打赏
  • 举报
回复
引用 6 楼 cpp2017 的回复:
引用 5 楼 djf_1985 的回复:
引用 3 楼 cpp2017 的回复:
将页面输出编码改为unicode再输入简体试试.

没用啊,我试过将编码为utf-8也没用

将输出页面改为utf-8,查看页面也是utf-8,应该是可以的.你再试试.


不可以的,我试了,存入数据库中成乱码
主要因为数据库是繁体的吧

简体中文怎么存入繁体数据库呢? 难道真要每个值前加个“N”?太复杂了
我先试试吧
djf_1985 2009-04-03
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 cpp2017 的回复:]
引用 5 楼 djf_1985 的回复:
引用 3 楼 cpp2017 的回复:
将页面输出编码改为unicode再输入简体试试.

没用啊,我试过将编码为utf-8也没用

将输出页面改为utf-8,查看页面也是utf-8,应该是可以的.你再试试.
[/Quote]

不可以的,我试了,存入数据库中成乱码
主要因为数据库是繁体的吧

简体中文怎么存入繁体数据库呢?
cpp2017 2009-04-03
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 djf_1985 的回复:]
引用 3 楼 cpp2017 的回复:
将页面输出编码改为unicode再输入简体试试.

没用啊,我试过将编码为utf-8也没用
[/Quote]
将输出页面改为utf-8,查看页面也是utf-8,应该是可以的.你再试试.
djf_1985 2009-04-03
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 cpp2017 的回复:]
将页面输出编码改为unicode再输入简体试试.
[/Quote]
没用啊,我试过将编码为utf-8也没用
djf_1985 2009-04-03
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 v_oneforever 的回复:]
(@input_string varchar(1000))
楼主把@input也设置成nvarchar看看。。估计在进入的时候已经变成乱码。再出来的时候。即使类型是nvarchar还是乱码
[/Quote]

这样改不行
cpp2017 2009-04-03
  • 打赏
  • 举报
回复
将页面输出编码改为unicode再输入简体试试.
cansum396 2009-04-03
  • 打赏
  • 举报
回复
DECLARE @VALUE=N'我是简体中文'

UPDATE TABLE SET FIELD=VALUE

在中文值之前加上大"N"就可以了
v_oneforever 2009-04-03
  • 打赏
  • 举报
回复
(@input_string varchar(1000))
楼主把@input也设置成nvarchar看看。。估计在进入的时候已经变成乱码。再出来的时候。即使类型是nvarchar还是乱码
yang_road 2009-04-03
  • 打赏
  • 举报
回复
我过去也出现过这样的情况,好像和数据库有关,你用简体的数据库就不会有问题了,或者保存前将简体字转换成繁体字。
djf_1985 2009-04-03
  • 打赏
  • 举报
回复
ASP中<META http-equiv="Content-Type" content="text/html; charset=big5">
在.NET中也能生效,不过得设置ValidateRequest="false"

62,268

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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