中文乱码问题
服务器端:
Windows NT 4.0 简体中文版
SQL Server 6.5 英文版 字符集设置是ISO 8859-1
利用查询分析器,可以在数据库的表中insert中文,然后可以select 出中文
----------------------------
客户端 :
Windows 2000 简单中文版
利用客户端程序取出的中文全部是乱码
应该怎么设置应用程序,才可以取出中文?
问题点数:100、回复次数:26Top
1 楼noApple(没有苹果)回复于 2004-08-01 14:24:39 得分 0
为什么看不到我发的贴子?
比如,下面在查询分析器里面,建立如下表,然后插入中文
create table u(name char(10))
insert into u values('我')
select * from u
在客户端应用取出中文全部是乱码??Top
2 楼noApple(没有苹果)回复于 2004-08-01 14:32:48 得分 0
在线等待呀!!Top
3 楼wzjcntlqs(要做钱的主人)回复于 2004-08-01 14:51:19 得分 0
帮你顶!!!Top
4 楼wzjcntlqs(要做钱的主人)回复于 2004-08-01 14:54:36 得分 5
是不是因为版本的原因啊Top
5 楼noApple(没有苹果)回复于 2004-08-01 15:13:14 得分 0
谢谢楼上的
版主帮帮忙呀Top
6 楼zheninchangjiang(徐若涵)回复于 2004-08-01 15:15:41 得分 5
将列的数据类型改为unicode的类型的
在插入时
insert into u values(N'我')
Top
7 楼zjcxc(邹建)回复于 2004-08-01 15:38:24 得分 5
用楼上的方法就可以了.
unicode类型指按下面的对应关系调整你的字段类型.
varchar --> nvarchar
char --> nchar
text --> ntextTop
8 楼noApple(没有苹果)回复于 2004-08-01 16:00:37 得分 0
sql server 6.5 里面没有unicode数据类型呀。Top
9 楼zjcxc(邹建)回复于 2004-08-01 16:09:53 得分 0
不会吧,sql6.5没有 nvarchar/nchar/ntext这三种数据类型?Top
10 楼zjcxc(邹建)回复于 2004-08-01 16:10:47 得分 0
可惜没用过6.5,不能做出肯定判断.Top
11 楼noApple(没有苹果)回复于 2004-08-01 16:23:34 得分 0
没有,真的没有Top
12 楼noApple(没有苹果)回复于 2004-08-01 16:24:22 得分 0
再说即使有,也不能改的
数据库是不能做任何改动的,只能从应用程序着手呀Top
13 楼zjcxc(邹建)回复于 2004-08-01 16:29:52 得分 0
你用客户端的程序存储/取数据呢(同一台电脑,不要一台存,另一台取)?Top
14 楼noApple(没有苹果)回复于 2004-08-01 16:58:02 得分 0
结果如下:
1)如果把应用程序放到服务器端执行,取出的中文依然为乱码
2) 使用dts把数据表导入到一台sql server2000上,然后配置应用程序连接sql server2000
取出的中文很正常
我的推论:
既然sql server 2000 的DTS可以把6.5上的中文取出,并导入到自己的数据库中,那应用程序也应该可以的,到底应该怎么设置呢?
Top
15 楼zjcxc(邹建)回复于 2004-08-01 17:11:29 得分 0
使用unicode编码,可以保证在不同的电脑(其实就是不同的语言环境下),都可以保证编码正确
不使用unicode编码,在不同的电脑上,就可能产生乱码(因为操作系统不同,对编码的解析就可能解释不同)
所以我让你测试一下:
你用客户端的程序存储/取数据呢(同一台电脑,不要一台存,另一台取)?
Top
16 楼zjcxc(邹建)回复于 2004-08-01 17:12:51 得分 0
关于unicode的相关知识,你先看看联机帮助上的说明.Top
17 楼noApple(没有苹果)回复于 2004-08-01 17:13:20 得分 0
板主,谢谢关注
我上面已经测试过了呀,你看看呀
既然sql server2000 可以把中文从6.5导入到自己库,那应用程序也可以,到底该怎么弄呢Top
18 楼noApple(没有苹果)回复于 2004-08-01 17:52:35 得分 0
版主大人,帮帮忙呀
sql6.5不支持unicode,即使支持,我也不能改动
只能从应用程序着手呀Top
19 楼Jeewins(华锐)回复于 2004-08-02 08:34:28 得分 0
密切关注~ing~!Top
20 楼zheninchangjiang(徐若涵)回复于 2004-08-02 08:58:07 得分 0
Double Byte Character Set (DBCS) characters --是从MSDN中找到的Top
21 楼noApple(没有苹果)回复于 2004-08-02 11:09:06 得分 0
我还没有搞定呀
这个数据库是 一个售票软件的数据库,那个售票软件是PB做的,在那个软件里,中文处理都是正常的,在的程序里,就不行(我用vb\delphi都不行)Top
22 楼noApple(没有苹果)回复于 2004-08-02 11:15:10 得分 0
这个数据库是 一个售票软件的数据库,那个售票软件是PB做的,在那个软件里,中文处理都是正常的.
可是在我的程序里,就不行(我用vb\delphi都不行)
Top
23 楼j9898(j9988)回复于 2004-08-02 11:19:10 得分 85
Case1
Server: SQL Server 的 Code Page 不為950--(简体中文为936,j9988注)
Client:裝有Office2000或上述任何會安裝 ODBC 3.70.0623的軟體,Access2000或Visual Studio 6.0的Database Tool 存取SQL的資料庫時,中文字會變亂碼?而且無法新增或修改中文資料?
=>這是由於ODBC 3.7x版預設會進行字元轉譯,以至於中文字會顯示亂碼,解決方式為在「控制台」/「ODBC資料來源(32位元)」建立DSN時, 不要核取「為字元資料執行轉譯」(Perform translation for character data)。如果您有程式是透過ODBC存取SQL Server database,在您的程式中可在Connection String加上「AutoTranslate = No」,來避開此一問題。(注意这儿,J9988注)
但是您在新增或修改中文資料至後端資料庫時仍舊會有問題產生,請更新client的ODBC Driver至3.70.0690解決此一問題,方式有下列兩種:
1. 安裝 SQL 7.0 SP1的mdac_typ.exe
2. 若不想安裝SQL7.0 SP1至client,只要複製一個3.70.0690版本的sqlsrv32.dll 至Windows\System
註:1. 請先備份 sqlsrv32.dll
2. Windows目錄請根據您的機器上的路徑設定;Windows NT 的預設目錄為 winnt\system32
Case2
Server: SQL Server 6.5
Client:裝有Office2000或上述任何會安裝 ODBC 3.70.0623的軟體,使用Microsoft Query存取後端資料庫時,中文字會變成亂碼?而且無法新增或修改中文資料?
=>處理方式同Case1
Case3
Server: 英文NT + Traditional Chinese Language Pace +SQL Server 7.0, CodePage為950 + IIS 4.0
Client: 中文IE 存取Server 的ASP中文為亂碼
解決方式
方法一: 這是因為IIS為英文版本的關係,請使用IIS 4.0中文版(即另外再架一台中文NT 4.0 with IIS 4.0)。
方法二: 在ASP的第一列加上<%@ Language=VBScript CODEPAGE=950 %>,並且設定欄位為nchar或nvarchar等Unicode欄位型態,同時在insert或query資料時加上N'。
方法三: 若舊有的database不方便將欄位型態修改為Unicode的欄位型態,您可以從修改ASP程式解決這個問題。在ASP的第一列加上<%@ Language=VBScript CODEPAGE=950 %> 可以解決寫入為亂碼的問題,若您需要在同一個ASP讀取中文字,在讀取前加上 Session.Codepage = 1252,讀取後立刻加上 Session.Codepage = 950。請遵從上述的修改原則,否則即可能導致您整個頁面變成亂碼。
Top
24 楼noApple(没有苹果)回复于 2004-08-02 12:48:43 得分 0
好好看看,试好了 就结贴Top
25 楼noApple(没有苹果)回复于 2004-08-02 15:52:41 得分 0
不行不行呀
情况是这样的:
服务器端:
Windows NT 4.0 简体中文版
SQL Server 6.5 英文版 字符集设置是ISO 8859-1
----------------------------
客户端 :
Windows 2000 简单中文版
一个PB的应用程序
这个PB的应用程序工作很正常
----------------------
问题是:
现在要在原有的系统上,开发一个web统计查询的功能
用的是asp,可是我取出的中文字段,全是乱码,不知道怎么回事情?
后来我用vb/delphi都尝试过了,都是乱码,所以我很奇怪,为什么那个PB做的软件就可以正确处理乱码呢?
Top
26 楼noApple(没有苹果)回复于 2004-08-02 16:44:05 得分 0
upTop




