100分送给解决者。感谢大家捧场。SQL SERVER 2005 EXPRESS与ASP.net出现中文变成问号的奇怪问题。很可能不是通常的utf-8编码问题。

自由程序员
C#领域优质创作者
博客专家认证
2008-04-24 10:09:14
环境为:英文windows server 2003 企业版,英文vs2005 专业版,sql server 2005 express是vs附带的那种。安装windows时,已经选择为中国,且已装东亚字符。

在DNN(不明白这个的,可以不管他,当作普通的asp.net网站就行)中写了一个叫"NewsImages"的模块,调用的swf,来显示5幅图片,实现图片轮换,点击图片打开对应的网站,图片下有标题说明。

5张图片,每张对应的“图片存放位置”“点击图片需要打开的网址”“图片的标题说明”,都是要存放在一张表中。

创建这个表的sql脚本,我直接在sql查询器中执行,中文的数据,不会变成问号。可是用DNN安装模块时,自动执行SQL时,会查看到数据库内的中文变成了问号。这可能说提示到,感觉问题出在dnn上,可是当我在NewsImages的编辑界面将问号改为中文时,又能成功的在数据表内显示中文。


如图1中在空白方框下有一排问号。因为没有填图片地址,所以显示为空白。


NewsImages模块编辑界面中有问号,这是从数据表中读取出来的。


我将问号改为中文,通过这个模块将其保存了数据库中,可以正常的保存为中文,而不是问号。


这时,用数据库管理器,打开表,可以看到,刚才在newsImages模块编辑界面中,我作的修改,已经成功的保存在数据表中。




当用DNN安装NEWSIMAGES模块时,DNN会执行01.00.00SqlDataProvider这个SQL脚本文件,这个文件的截图如下:


安装模块后,用数据库管理器,查看表,会发现,中文全变成问号了,如图:


而我将这个脚本复制到数据的查询分析器,执行,再查看数据表的内容会发现一切正常,中文没变问号。如图:


我昨天,忙活了一天,也没有找到原因。网上有很多说是编码的问题。可是为什么会有时变问号,有时正常?我也将中文前加了N,定义列也是用的ntext,也将SQL改为simple Chinese了。问题依旧。

100分送给解决者。感谢大家捧场。
...全文
2037 45 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
45 条回复
切换为时间正序
请发表友善的回复…
发表回复
古筝 2011-10-13
  • 打赏
  • 举报
回复
我也遇到这个问题
zzhang809 2009-08-25
  • 打赏
  • 举报
回复
1、确保ASP页面是UTF-8编码的,并在ASP页面顶部声明中使用<%@ LANGUAGE = VBScript CodePage = 65001%>进行编码声明

2、输出的HTML页面中声明字符集:<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

3、在进行URL参数传递的时候,要使用Server.URLEncode()方法进行编码

4、使用JS进行URL参数传递中文的时候,要使用escape进行编码

5、在将UTF-8编码的内容存入SQL SERVER数据库中的时候,要存储的字段必须设置为NVARCHAR类型,SQL语句要在内容前加N表示,如insert into user (name) values (N´&username&´)
Whikiey 2008-07-29
  • 打赏
  • 举报
回复
应该是 SQL 脚本文件保存的时候没有使用UTF-8编码
估计DNN在安装模块,读取脚本的时候使用的是UTF-8编码.
清风道禅 2008-05-19
  • 打赏
  • 举报
回复
JF`关注
GengWH 2008-05-19
  • 打赏
  • 举报
回复
存入数据库的时候对数据进行加密,然后取出来的时候解密就行了。
地下室小红叔 2008-05-19
  • 打赏
  • 举报
回复
4 标记<%@ page contentType="text/html;chartset=utf-8"%>
地下室小红叔 2008-05-19
  • 打赏
  • 举报
回复
我能想到的
1 将数据库的相关参数改为NVarchar
2 字符串参数的长度太小 被截断了
3 保存前编码 如c#的 Server.UrlEncode 取出时解码Server.UrlDecode
自由程序员 2008-05-19
  • 打赏
  • 举报
回复
?
自由程序员 2008-05-16
  • 打赏
  • 举报
回复
?
自由程序员 2008-05-07
  • 打赏
  • 举报
回复
未解决,waitting
自由程序员 2008-05-06
  • 打赏
  • 举报
回复
排序规则为Chinese_PRC_CI_AS
cat_hsfz 2008-05-05
  • 打赏
  • 举报
回复
英文vs2005 专业版,sql server 2005 express是vs附带的那种

--

就是这个问题,你要设置SQL数据库的编码是UNICODE,排序是中文(拼音)。否则就会出各种问题。
half_bucket 2008-05-05
  • 打赏
  • 举报
回复
数据库也有编码的,请注意
half_bucket 2008-05-05
  • 打赏
  • 举报
回复
Vs2005中打开aspx页面,改变aspx页面的编码,最好用utf-8
wdx2008 2008-05-05
  • 打赏
  • 举报
回复
英文默认编码可能是iso-8859-1(西欧字符)而非UTF-8
数据字段使用nvarchar,ntext
前台调用使用UTF-8编码试试!
wang8882008 2008-05-05
  • 打赏
  • 举报
回复
vs2005 工具->选项->文本编辑器->勾选自动检测不带urf-8编码
stromboy007 2008-05-05
  • 打赏
  • 举报
回复
不懂
自由程序员 2008-05-05
  • 打赏
  • 举报
回复
?
knowledge_Is_Life 2008-05-01
  • 打赏
  • 举报
回复
等待牛人来答.
dwp008 2008-04-30
  • 打赏
  • 举报
回复
在运行插入功能时 你可以先试着用SQL Server profiler去跟踪插入SQL里面的语句
看看插入的语句里面是不是乱码,如果这里面就是乱码的话代表你代码生成插入语句的时候就已经是不行了。
如果这里面好的话 那就代表你SQl数据库里面还是有些没有配置正确
呵呵
加载更多回复(22)

62,243

社区成员

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

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

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

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