插入中文为什么会乱码?(30分)

  • 主题发起人 主题发起人 twin
  • 开始时间 开始时间
T

twin

Unregistered / Unconfirmed
GUEST, unregistred user!
我是用DreamWeaverMx+asp.net+MSSQL7.0做数据插入的时候,英文、数字都没有出现任何问题,可是插入中文就会乱码(在数据库里看数据),这是什么回事呢?
帮帮忙!
 
你的数据类型是varchar还是nvarchar
如果是nvarchar的话,insert要写成这样
insert into tb1 (field1) values (N'测试')
value前面要带个N
 
我用的是char
 
那你就应该检查你的SQL是否传入的是正确编码的汉字了,你可以用事件查看器查看一下你的SQL或在网页上输出你的SQL,是否是正确的汉字或是乱码
 
不是太明白你的意思,希望大哥能说清楚点,麻烦你啦
 
你是用SQLCOMMAND执行exexnonquery(),这样更新的吧,你可以跟踪一下看看sqlcommand.commandtext到底正不正确
 
<MM:Insert
runat="server"
CommandText='<%# "INSERT INTO dbo.wj_department (wj_dep_name, wj_dep_ip) VALUES (@wj_dep_name, @wj_dep_ip)" %>'
ConnectionString='<%# System.Configuration.ConfigurationSettings.AppSettings("MM_CONNECTION_STRING_conn_wenju") %>'
DatabaseType='<%# System.Configuration.ConfigurationSettings.AppSettings("MM_CONNECTION_DATABASETYPE_conn_wenju") %>'
Expression='<%# Request.Form("MM_insert") = "form1" %>'
CreateDataSet="false"
SuccessURL='<%# "input.aspx" %>'
Debug="true"
>
<Parameters>
<Parameter Name="@wj_dep_name" Value='<%# IIf((Request.Form("dep") <> Nothing), Request.Form("dep"), "") %>' Type="Char" />
<Parameter Name="@wj_dep_ip" Value='<%# IIf((Request.Form("ip") <> Nothing), Request.Form("ip"), "") %>' Type="Char" />
</Parameters>
</MM:Insert>
<MM:PageBind runat="server" PostBackBind="true" />
看看吧!
 
在最前面加一行
<%@ Page ResponseEncoding="gb2312" requestEncoding="gb2312" %>
最好是先用SQL7带的事件查看器看看SQL语句是否正确,SQL2000里叫事件查看器,SQL7里应该也有类似的工具
 
我照你的方法跟踪了一下,你帮我看看好吗?
写英文:
sp_reset_connection
go
sp_executesql N'INSERT INTO dbo.wj_department (wj_dep_name, wj_dep_ip) VALUES (@wj_dep_name, @wj_dep_ip)', N'@wj_dep_name varchar(5),@wj_dep_ip varchar(8)', 'sdfsd', 'asdfasdf'
go
写中文:
sp_reset_connection
go
SELECT * FROM dbo.wj_department ORDER BY wj_dep_id DESC
go
sp_reset_connection
go
sp_executesql N'INSERT INTO dbo.wj_department (wj_dep_name, wj_dep_ip) VALUES (@wj_dep_name, @wj_dep_ip)', N'@wj_dep_name varchar(2),@wj_dep_ip varchar(2)', '??', '??'
go
sp_reset_connection
go
SELECT * FROM dbo.wj_department ORDER BY wj_dep_id DESC
go
 
那说明是你的编码有问题,网页上传过来的都是乱码
我上面让你加的那一行加了吗,试一下先
不知道DreamWeaverMx是否支持web.config文件,在这个文件里可以设定编码,设定如下
在globalization这一节里
fileEncoding="utf-8"
requestEncoding="utf-8"
responseEncoding="utf-8"
culture="gb2312"
uiCulture="gb2312
不过我觉得用DreamWeaverMx还是不太好,本来asp.net的好处就在于网页代码和程序代码分离,如果用DreamWeaverMx做的话还是象ASP一样了
 
这是DW-MX写:
<%@ Page Language="VB" ContentType="text/html" ResponseEncoding="gb2312" %>
<%@ Register TagPrefix="MM" Namespace="DreamweaverCtrls" Assembly="DreamweaverCtrls,version=1.0.0.0,publicKeyToken=836f606ede05d46a,culture=neutral" %>
<MM:Insert
runat="server"
CommandText='<%# "INSERT INTO dbo.wj_department (wj_dep_name, wj_dep_ip) VALUES (@wj_dep_name, @wj_dep_ip)" %>'
ConnectionString='<%# System.Configuration.ConfigurationSettings.AppSettings("MM_CONNECTION_STRING_conn_wenju") %>'
DatabaseType='<%# System.Configuration.ConfigurationSettings.AppSettings("MM_CONNECTION_DATABASETYPE_conn_wenju") %>'
Expression='<%# Request.Form("MM_insert") = "form1" %>'
CreateDataSet="false"
SuccessURL='<%# "inptu2.aspx" %>'
Debug="true"
>
<Parameters>
<Parameter Name="@wj_dep_name" Value='<%# IIf((Request.Form("textfield") <> Nothing), Request.Form("textfield"), "") %>' Type="VarChar" />
<Parameter Name="@wj_dep_ip" Value='<%# IIf((Request.Form("textfield2") <> Nothing), Request.Form("textfield2"), "") %>' Type="VarChar" />
</Parameters>
</MM:Insert>
这些代码都是DW-MX写的,它也有web.config,是这样的:
<configuration>
<appSettings>
<add key="MM_CONNECTION_HANDLER_conn_wenju" value="sqlserver.htm" />
<add key="MM_CONNECTION_STRING_conn_wenju" value="Persist Security Info=False;Data Source=KENNY;Initial Catalog=KENNY;User ID=123;Password=123" />
<add key="MM_CONNECTION_DATABASETYPE_conn_wenju" value="SQLServer" />
<add key="MM_CONNECTION_SCHEMA_conn_wenju" value="" />
<add key="MM_CONNECTION_CATALOG_conn_wenju" value="" />
</appSettings>
</configuration>
是不是DW-MX本身的问题呢?其实我手写的能力比较差,你可以推荐用什么工具比较呢?
 
我当然是用visual studio .net啦
<system.web>
<globalization requestEncoding="gb2312" responseEncoding="gb2312" fileEncoding="gb2312"/>
</system.web>
把上面这几行插入到你的web.config文件里的倒数第二行
也就是</configuration>这一行之上试试吧
 
不行加入之后,报错的,唉!
Server Error in '/' Application.
--------------------------------------------------------------------------------
Configuration Error
Description: An error occurred during the processing of a configuration file required to service this request. Please review the specific error details below and modify your configuration file appropriately.
Parser Error Message: Unrecognized configuration section 'globalization'
Source Error:

Line 8: <add key="MM_CONNECTION_CATALOG_conn_wenju" value="" />
Line 9: </appSettings>
Line 10: <globalization requestEncoding="gb2312" responseEncoding="gb2312" fileEncoding="gb2312"/>
Line 11:
Line 12: </configuration>

Source File: D:/web/wenju/web.config Line: 10

--------------------------------------------------------------------------------
Version Information: Microsoft .NET Framework Version:1.1.4322.573;
ASP.NET Version:1.1.4322.573
你估计大概是什么问题呢?非常多谢你的热心帮助,即使你解决不了,我的分也给定你了。可以和你做个朋友?
 
它还有一个DLL文件的,你说是不是这个东西作怪呢?
 
<system.web>
这一行加了吗
</system.web>
这个也别忘了
我用DreamWeaverMx也试一下看
 
OK!!!!!!!!!!!啦!!!!!!!!!!!!!!!!Thank you!
交个朋友可以吗?
 

Similar threads

回复
0
查看
848
不得闲
回复
0
查看
1K
不得闲
S
回复
0
查看
835
SUNSTONE的Delphi笔记
S
后退
顶部