【发布时间】:2013-11-28 05:12:25
【问题描述】:
我有一个包含波斯字符的 xls 文件,我想加载它并将其保存到现有数据库中。
我已经试过这个来加载文件:
Dim str As String = "Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + path + ";Extended Properties=Excel 8.0;"
但现在当我加载它并将其保存到数据库时,波斯语字符看起来像 ? 符号。
但问题是这样的:
当我将其加载到本地或将某些内容从本地保存到数据库中时,没有问题,一切正常,但是在将其发布到服务器后,不仅从 xls 文件导入的行看起来很糟糕,而且当我保存一些时从文本框之类的控件到数据库,UTF-8 字符也类似于 ?。
sql表是不是默认上Unicode的?!
这里有什么问题?
更新
这是我将加载的数据保存在数据库中的方式:
Dim con As New OleDb.OleDbConnection(str)
con.Open()
Dim ds As New OleDb.OleDbDataAdapter("Select * from [Sheet1$]", con)
Dim dt As New DataTable()
ds.Fill(dt)
Dim sqlconnection As SqlConnection
Dim sqlcommand As String
Dim sqlconnectionsrting As String = System.Configuration.ConfigurationManager.ConnectionStrings("IEEConnectionString").ConnectionString
sqlconnection = New SqlConnection(sqlconnectionsrting)
sqlconnection.Open()
code = (Convert.ToInt32(dt(i).Item(9))).ToString()
Dim productType = (Convert.ToInt32(dt(i).Item(11))).ToString()
Dim name = dt(i).Item(10)
Dim date1 = DateAndTime.Now
Dim price = (Convert.ToInt32(dt(i).Item(8))).ToString()
Dim factory = dt(i).Item(7)
Dim type = dt(i).Item(6).ToString()
Dim clearance = dt(i).Item(5).ToString()
Dim weight = dt(i).Item(4).ToString()
Dim perimeter = dt(i).Item(3).ToString()
Dim dimension = dt(i).Item(2).ToString()
Dim lenght = dt(i).Item(1).ToString()
Dim thickness = dt(i).Item(0).ToString()
sqlcommand = "INSERT INTO Product (ProductType,Name,Date,Code,Price,Factory,Type,Clearance,Weight,Perimeter,Dimension,Length,Thickness,IsShown) VALUES ('" + productType + "','" + name + "','" + date1 + "','" + code + "','" + price + "','" + factory + "','" + type + "','" + clearance + "','" + weight + "','" + perimeter + "','" + dimension + "','" + lenght + "','" + thickness + "','false')"
Dim command As New SqlCommand(sqlcommand, sqlconnection)
command.ExecuteNonQuery()
con.Close()
【问题讨论】:
-
SQL server 使用的代码页是可配置的,根据我有限的经验是 UTF8。
-
数据库之前已经在 SQL_Latin1_General_CP1256_CI_AS 中创建,我刚刚添加了一些表,现在新表在发布到服务器时不支持 UTF-8(在本地可以)。
-
您在数据库表中的列是什么数据类型?要支持 Unicode,您必须使用
NVARCHAR(x)-VARCHAR不支持 Unicode 或 UTF-8 .. -
检查您存储数据的列的数据类型,
varchar或char将不起作用。 -
都是nvarchar(x)!
标签: c# asp.net sql-server vb.net utf-8