程序是繁体,输入繁体保存到数据库,然后显示没有问题。
如果输入简体,保存在数据库中,存入的就是乱码。从数据库中读取时有个简体的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

解决方案 »

  1.   

    (@input_string varchar(1000))
    楼主把@input也设置成nvarchar看看。。估计在进入的时候已经变成乱码。再出来的时候。即使类型是nvarchar还是乱码
      

  2.   

    DECLARE @VALUE=N'我是简体中文'UPDATE TABLE SET FIELD=VALUE在中文值之前加上大"N"就可以了
      

  3.   

    将页面输出编码改为unicode再输入简体试试.
      

  4.   

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

  5.   

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

  6.   

    引用 6 楼 cpp2017 的回复:
    引用 5 楼 djf_1985 的回复: 
    引用 3 楼 cpp2017 的回复: 
    将页面输出编码改为unicode再输入简体试试. 没用啊,我试过将编码为utf-8也没用 将输出页面改为utf-8,查看页面也是utf-8,应该是可以的.你再试试. 
     不可以的,我试了,存入数据库中成乱码 
    主要因为数据库是繁体的吧 简体中文怎么存入繁体数据库呢? 难道真要每个值前加个“N”?太复杂了
    我先试试吧
      

  7.   

    ASP中<META http-equiv="Content-Type" content="text/html; charset=big5">
    在.NET中也能生效,不过得设置ValidateRequest="false"