線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:7647
推到 Plurk!
推到 Facebook!

請教Unicode字串格式的轉換問題

尚未結案
pedro
尊榮會員


發表:152
回覆:1187
積分:892
註冊:2002-06-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2013-09-05 10:48:10 IP:60.248.xxx.xxx 未訂閱
底下有幾個字串,我想轉成網頁的utf-8輸出,但經處理後,str1輸出結果不正常是"忘??測?",str2輸出正常"測試請款",str3輸出不正常"請?測試 "
請教有unicode轉換經驗的前輩,這問題出在哪? 謝謝

[code vb]
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
Dim str1 As String = "敹??⊥葫閰?" '正常應為"忘打卡測試"
Dim str2 As String = "皜祈岫隢狡" '正常應為"測試請款"
Dim str3 As String = "隢?皜祈岫" '正常應為"請假測試"
Dim strarry() As Byte = System.Text.Encoding.Default.GetBytes(str1)
Label1.Text = Encoding.UTF8.GetString(strarry)
End Sub

[/code]

sryang
尊榮會員


發表:39
回覆:762
積分:920
註冊:2002-06-27

發送簡訊給我
#2 引用回覆 回覆 發表時間:2013-09-08 11:43:58 IP:114.35.xxx.xxx 訂閱
我覺得很怪,為什麼要這樣寫?

只要你的 .aspx 網頁是宣告成 utf-8 輸出就好
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

其他就照常寫

Dim str1 As String = "忘打卡測試"
Label1.Text = str1

===================引 用 pedro 文 章===================
底下有幾個字串,我想轉成網頁的utf-8輸出,但經處理後,str1輸出結果不正常是"忘??測?",str2輸出正常"測試請款",str3輸出不正常"請?測試 "
請教有unicode轉換經驗的前輩,這問題出在哪? 謝謝

[code vb]
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
Dim str1 As String = "敹??⊥葫閰?" '正常應為"忘打卡測試"
Dim str2 As String = "皜祈岫隢狡" '正常應為"測試請款"
Dim str3 As String = "隢?皜祈岫" '正常應為"請假測試"
Dim strarry() As Byte = System.Text.Encoding.Default.GetBytes(str1)
Label1.Text = Encoding.UTF8.GetString(strarry)
End Sub

[/code]

------
歡迎參訪 "腦殘賤貓的備忘錄" http://maolaoda.blogspot.com/
編輯記錄
sryang 重新編輯於 2013-09-08 11:44:28, 註解 無‧
pedro
尊榮會員


發表:152
回覆:1187
積分:892
註冊:2002-06-12

發送簡訊給我
#3 引用回覆 回覆 發表時間:2013-09-09 16:26:20 IP:60.248.xxx.xxx 未訂閱
sryang你好

謝謝你的回覆。
字串的來源是資料庫,用dim只是方便問題簡化到字串格式的轉換。

===================引 用 sryang 文 章===================
我覺得很怪,為什麼要這樣寫?

只要你的 .aspx 網頁是宣告成 utf-8 輸出就好
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

其他就照常寫

Dim str1 As String = "忘打卡測試"
Label1.Text = str1

===================引 用 pedro 文 章===================
底下有幾個字串,我想轉成網頁的utf-8輸出,但經處理後,str1輸出結果不正常是"忘??測?",str2輸出正常"測試請款",str3輸出不正常"請?測試 "
請教有unicode轉換經驗的前輩,這問題出在哪? 謝謝

[code vb]
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
Dim str1 As String = "敹??⊥葫閰?" '正常應為"忘打卡測試"
Dim str2 As String = "皜祈岫隢狡" '正常應為"測試請款"
Dim str3 As String = "隢?皜祈岫" '正常應為"請假測試"
Dim strarry() As Byte = System.Text.Encoding.Default.GetBytes(str1)
Label1.Text = Encoding.UTF8.GetString(strarry)
End Sub

[/code]

sryang
尊榮會員


發表:39
回覆:762
積分:920
註冊:2002-06-27

發送簡訊給我
#4 引用回覆 回覆 發表時間:2013-09-09 16:37:15 IP:114.35.xxx.xxx 訂閱
字串來源是資料庫也一樣,直接指定給 Label.Text 就好,ASP.Net 會幫你轉成 UTF-8

===================引 用 pedro 文 章===================
sryang你好

謝謝你的回覆。
字串的來源是資料庫,用dim只是方便問題簡化到字串格式的轉換。

===================引 用 sryang 文 章===================
我覺得很怪,為什麼要這樣寫?

只要你的 .aspx 網頁是宣告成 utf-8 輸出就好
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

其他就照常寫

Dim str1 As String = "忘打卡測試"
Label1.Text = str1

===================引 用 pedro 文 章===================
底下有幾個字串,我想轉成網頁的utf-8輸出,但經處理後,str1輸出結果不正常是"忘??測?",str2輸出正常"測試請款",str3輸出不正常"請?測試 "
請教有unicode轉換經驗的前輩,這問題出在哪? 謝謝

[code vb]
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
Dim str1 As String = "敹??⊥葫閰?" '正常應為"忘打卡測試"
Dim str2 As String = "皜祈岫隢狡" '正常應為"測試請款"
Dim str3 As String = "隢?皜祈岫" '正常應為"請假測試"
Dim strarry() As Byte = System.Text.Encoding.Default.GetBytes(str1)
Label1.Text = Encoding.UTF8.GetString(strarry)
End Sub

[/code]

------
歡迎參訪 "腦殘賤貓的備忘錄" http://maolaoda.blogspot.com/
pedro
尊榮會員


發表:152
回覆:1187
積分:892
註冊:2002-06-12

發送簡訊給我
#5 引用回覆 回覆 發表時間:2013-09-09 17:34:17 IP:60.248.xxx.xxx 未訂閱

已宣告meta字集為utf-8,字串指定給Label1.Text仍不會自動轉換格式

[code xml]
<head runat="server"><br /><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><br /> <title></title>
</head><br /><body><br /> <form id="form1" runat="server"><br />







</form><br /></body><br /></html><br />

[/code]

[code vb]
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
Dim str1 As String = "敹??⊥葫閰?" '正常應為"忘打卡測試"
Dim str2 As String = "皜祈岫隢狡" '正常應為"測試請款"
Dim str3 As String = "隢?皜祈岫" '正常應為"請假測試"
' Dim strarry() As Byte = System.Text.Encoding.Default.GetBytes(str1)
'Label1.Text = Encoding.UTF8.GetString(strarry)
Label1.Text = str1
End Sub

[/code]


===================引 用 sryang 文 章===================
字串來源是資料庫也一樣,直接指定給 Label.Text 就好,ASP.Net 會幫你轉成 UTF-8

===================引 用 pedro 文 章===================
sryang你好

謝謝你的回覆。
字串的來源是資料庫,用dim只是方便問題簡化到字串格式的轉換。

===================引 用 sryang 文 章===================
我覺得很怪,為什麼要這樣寫?

只要你的 .aspx 網頁是宣告成 utf-8 輸出就好
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

其他就照常寫

Dim str1 As String = "忘打卡測試"
Label1.Text = str1

===================引 用 pedro 文 章===================

底下有幾個字串,我想轉成網頁的utf-8輸出,但經處理後,str1輸出結果不正常是"忘??測?",str2輸出正常"測試請款",str3輸出不正常"請?測試 "
請教有unicode轉換經驗的前輩,這問題出在哪? 謝謝

[code vb]
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
Dim str1 As String = "敹??⊥葫閰?" '正常應為"忘打卡測試"
Dim str2 As String = "皜祈岫隢狡" '正常應為"測試請款"
Dim str3 As String = "隢?皜祈岫" '正常應為"請假測試"
Dim strarry() As Byte = System.Text.Encoding.Default.GetBytes(str1)
Label1.Text = Encoding.UTF8.GetString(strarry)
End Sub

[/code]

sryang
尊榮會員


發表:39
回覆:762
積分:920
註冊:2002-06-27

發送簡訊給我
#6 引用回覆 回覆 發表時間:2013-09-09 19:18:19 IP:221.120.xxx.xxx 訂閱
這時就要看資料庫中實際存放的是什麼了
是 NVARCHAR?還是 VARCHAR?
如果是 VARCHAR,內碼是哪一種?

再來看要如何轉換成正確的 Unicode。
方便的話,可以把資料匯出來上傳至 嗎?
------
歡迎參訪 "腦殘賤貓的備忘錄" http://maolaoda.blogspot.com/
aftcast
站務副站長


發表:81
回覆:1485
積分:1763
註冊:2002-11-21

發送簡訊給我
#7 引用回覆 回覆 發表時間:2013-09-11 06:52:19 IP:114.42.xxx.xxx 訂閱
 從下面你的這行就可以看出

Dim str1 As String = "敹??⊥葫閰?"

1/ 你想要在str1裡「硬塞」utf8的字串
2/ 你目前這個source code存檔時並沒有選utf8,所以等於後面才會有那些怪字。

推論:
你這樣的模擬方式與從db讀進來,然後給str1值不會一樣。一般來說,你要先把source code 存成utf8,再進一步實驗,才會把問題縮小。我大概猜得出來你db中放的是utf8的字串,是嗎? 若是,那那些值又是怎麼被寫入到db中的? 一樣是透過網頁? 或是 delphi 寫入?

原則上若你的欄位是 varchar,放的又是utf8的字串,那你就準備頭痛 (若你是mssql)。 utf8的字串應該要先設定給array接住,不該由string接住。先array再用utf8的encode來轉成str1,然後就會如sryang說的,一切都自然了 (因原則上asp net會以 response charset = utf8的情形幫你一整個轉)。
------


蕭沖
--All ideas are worthless unless implemented--

C++ Builder Delphi Taiwan G+ 社群
http://bit.ly/cbtaiwan
系統時間:2024-04-27 10:31:20
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!