程序是繁体,输入繁体保存到数据库,然后显示没有问题。
如果输入简体,保存在数据库中,存入的就是乱码。从数据库中读取时有个简体的SQL函数CONVERT2UNICODE进行转换,但显示出来的还是乱码
数据库数据类型是nvarcharPS:在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
如果输入简体,保存在数据库中,存入的就是乱码。从数据库中读取时有个简体的SQL函数CONVERT2UNICODE进行转换,但显示出来的还是乱码
数据库数据类型是nvarcharPS:在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
楼主把@input也设置成nvarchar看看。。估计在进入的时候已经变成乱码。再出来的时候。即使类型是nvarchar还是乱码
引用 5 楼 djf_1985 的回复:
引用 3 楼 cpp2017 的回复:
将页面输出编码改为unicode再输入简体试试. 没用啊,我试过将编码为utf-8也没用 将输出页面改为utf-8,查看页面也是utf-8,应该是可以的.你再试试.
不可以的,我试了,存入数据库中成乱码
主要因为数据库是繁体的吧 简体中文怎么存入繁体数据库呢? 难道真要每个值前加个“N”?太复杂了
我先试试吧
在.NET中也能生效,不过得设置ValidateRequest="false"