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

請問該如何讀取unicode文字檔

答題得分者是:ANDY8C
dietk
一般會員


發表:2
回覆:6
積分:1
註冊:2011-07-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2011-07-23 21:31:20 IP:114.32.xxx.xxx 訂閱
請問該如何讀取unicode文字檔到Memo元件(已經查詢過站內資料)
但是參考
http://delphi.ktop.com.tw/board.php?cid=30&fid=76&tid=34740

我不懂的是:
(1)先利用 TMemoryStream 把 Unicode 文字檔載入記憶體
(2)再利用 Win32 API WideCharToMultiByte 把 Unicode 轉換成 ANSI
(2) 該如何使用

我目前的程式碼


[code delphi]
procedure TForm1.Button3Click(Sender: TObject);
var
g:TMemoryStream;
begin
g:=TMemoryStream.Create ;
g.LoadFromFile('新文字文件.txt') ; //新文字文件內文字為Unicode編碼
memo3.Text := WideCharToMultiByte(g) ;
g.Free
end;
[/code]

我應該如何去使用它
我是剛學Delphi的新手,使用的版本是Delphi 7
請教各位大大



編輯記錄
dietk 重新編輯於 2011-07-23 07:35:50, 註解 無‧
max5020
資深會員


發表:29
回覆:277
積分:321
註冊:2003-06-04

發送簡訊給我
#2 引用回覆 回覆 發表時間:2011-07-25 14:44:17 IP:211.22.xxx.xxx 訂閱
據我所知, Delphi-7不支援Unicode吧??
dietk
一般會員


發表:2
回覆:6
積分:1
註冊:2011-07-23

發送簡訊給我
#3 引用回覆 回覆 發表時間:2011-07-25 15:08:23 IP:120.107.xxx.xxx 訂閱
這位大大,我是希望能在記憶體裡面處理Unicode文字轉成ANSI文字
利用程式碼去處理,再把ANSI文字顯示到memo物件裡面,真的沒有辦法嗎。
===================引 用 max5020 文 章===================
據我所知, Delphi-7不支援Unicode吧??
編輯記錄
dietk 重新編輯於 2011-07-25 01:09:02, 註解 無‧
max5020
資深會員


發表:29
回覆:277
積分:321
註冊:2003-06-04

發送簡訊給我
#4 引用回覆 回覆 發表時間:2011-07-25 15:15:36 IP:211.22.xxx.xxx 訂閱
那是因為Delphi-7的元件不支援Unicode,
就像是你在TEdit上打不出"堃"這個字一樣
dietk
一般會員


發表:2
回覆:6
積分:1
註冊:2011-07-23

發送簡訊給我
#5 引用回覆 回覆 發表時間:2011-07-25 15:33:51 IP:120.107.xxx.xxx 訂閱
不好意思,不知得我是看不懂您的意思,還是我打不夠清楚。
目前我是希望把以Unicode編碼存檔的文字檔轉成 Ansi 的 Big5 編碼,讀進memo元件。
上面方式都已Delphi-7的程式碼完成。

'中文' ( Ansi 的 Big5 編碼)


===================引 用 max5020 文 章===================
那是因為Delphi-7的元件不支援Unicode,
就像是你在TEdit上打不出"堃"這個字一樣
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#6 引用回覆 回覆 發表時間:2011-07-25 20:01:19 IP:122.116.xxx.xxx 訂閱
前輩的意思是說Delphi7的元件沒辦法顯示Unicode ^^
dietk
一般會員


發表:2
回覆:6
積分:1
註冊:2011-07-23

發送簡訊給我
#7 引用回覆 回覆 發表時間:2011-07-26 10:54:34 IP:120.107.xxx.xxx 訂閱
所以在連轉換字碼之後顯示出來都辦不到嗎??
===================引 用 taishyang 文 章===================
max5020
前輩的意思是說Delphi7的元件沒辦法顯示Unicode ^^
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#8 引用回覆 回覆 發表時間:2011-07-26 11:18:12 IP:122.116.xxx.xxx 訂閱
有些字會辦不到,例如 [堃] 這個字

===================引 用 dietk 文 章===================
所以在Delphi7連轉換字碼之後顯示出來都辦不到嗎??
===================引 用 taishyang 文 章===================
max5020前輩的意思是說Delphi7的元件沒辦法顯示Unicode ^^
dietk
一般會員


發表:2
回覆:6
積分:1
註冊:2011-07-23

發送簡訊給我
#9 引用回覆 回覆 發表時間:2011-07-27 10:21:14 IP:122.117.xxx.xxx 訂閱
所以還是可以處理大部分的文字,但是應該要怎麼處理,可以請副站長幫我解迷嗎??
===================引 用 taishyang 文 章===================
有些字會辦不到,例如 [堃] 這個字

ANDY8C
資深會員


發表:114
回覆:582
積分:299
註冊:2006-10-29

發送簡訊給我
#10 引用回覆 回覆 發表時間:2011-07-27 18:20:06 IP:61.57.xxx.xxx 訂閱

delphi 7 的元件,有些無法顯示 Unicode 的字元

您的問題,我個人淺見
1. UNicode中文 轉 Big5中文 ,不知是否有全部的對應字元
例如 : Unicode 字,国堃煊钟.....等,Big5 的字元集中,也許沒有此字,轉成功後,也無法顯示

==>> 以上問題,好像可用另一套字集補齊 (本站有討論過)

3. memo 的元件,中文僅接受 Big5 的字, UniCode 的字有些會無法顯示



反正舊版的 delphi ,遇到 UniCode 就一堆問題,......
花錢解決方法(不談浪費的工時)
小錢 .... 買 TNT 元件(針對 unicode 部份)
大錢 ..... 更新 delphi 到 XE 以上版本

但是,提醒您,花了以上的錢,不代表一切順利
因為用字串的計算函示,全部都重寫
舊 DELPHI 的 string 是 ANSI 的 string
新 DELPHI 的 string 是 Wide 的 string (unicode 的意思)

所以,舊程式不改寫,直接用 新版 delphi Compiler 後,都OK; 但RUN 後結果完全錯誤

所以有人說,把舊程式的 string 改為 ANSIstring 的宣告,看視簡單,改到手軟.....


很好奇

為何新版 delphi 的 string ....不沿用 舊版的 ansi 規格 , 而是強迫升級為 wide String ?


新版 DELPHI 另創一個變數宣告 , Wstring .....專給 Unicode 使用的規格,不是很好嗎 ?

老外可能無 單/雙 byte 問題, 中文國家就很累了.

===================引 用 dietk 文 章===================
不好意思,不知得我是看不懂您的意思,還是我打不夠清楚。
目前我是希望把以Unicode編碼存檔的文字檔轉成 Ansi 的 Big5 編碼,讀進memo元件。
上面方式都已Delphi-7的程式碼完成。

'中文'(Ansi 的 Big5 編碼)


------
---------------------------------------
偶爾才來 KTOP ,交流條碼問題,在 FB [條碼標籤達人] 社團留言,感恩.
dietk
一般會員


發表:2
回覆:6
積分:1
註冊:2011-07-23

發送簡訊給我
#11 引用回覆 回覆 發表時間:2011-07-27 23:47:20 IP:111.252.xxx.xxx 訂閱
謝謝以上大大替我解謎 我大概會去更新成 XE吧
編輯記錄
dietk 重新編輯於 2011-07-27 09:48:22, 註解 無‧
Victor4022
中階會員


發表:0
回覆:76
積分:90
註冊:2011-02-20

發送簡訊給我
#12 引用回覆 回覆 發表時間:2011-08-15 22:43:46 IP:122.126.xxx.xxx 訂閱
除了 Tnt VCL 之外, 您也可以考慮 LMD Innovative 推出的 ElPack(不過要 2009或之後的版本), 其內含許多 TElxxx的 VCL 都支援 Unicode, 而且包裝得比標準 VCL 還好用, 像 TElTree, TElEdit...
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#13 引用回覆 回覆 發表時間:2011-08-16 00:53:17 IP:118.169.xxx.xxx 未訂閱
如果你只是要想要unicode字集, 而且是在xp操作的話(Delphi7以下), 可以搜尋關鍵字"補完計劃", 
這套是免費的工具, 安裝後可以補足unicode數千個字集, 包含上面所提到的各種字"堃", 同時印表
也沒有問題, 你可以不用改任何程式碼, 因為它是幫你在windows中創建unicode字出來, 所以與
程式沒有任何關係, 但要注意, 這套字並不是unicode, 還是屬於big-5,
但如果是 vista或server系統就沒轍了
===================引 用 dietk 文 章===================
謝謝以上大大替我解謎 我大概會去更新成 XE吧
編輯記錄
P.D. 重新編輯於 2011-08-15 10:54:44, 註解 無‧
系統時間:2024-04-25 17:34:19
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!