中文亂碼問題 |
答題得分者是:tick228
|
ashin123
一般會員 發表:2 回覆:6 積分:1 註冊:2016-09-22 發送簡訊給我 |
|
herbert2
尊榮會員 發表:58 回覆:640 積分:894 註冊:2004-04-16 發送簡訊給我 |
|
ashin123
一般會員 發表:2 回覆:6 積分:1 註冊:2016-09-22 發送簡訊給我 |
DEAR H大
抱歉~ 我的問題可能沒有說的很清楚 因為我現在是將TXT檔裡面的值讀出來進行MEMO的放入 所以如果沒辦法先將讀到的內容先宣告成 str = L"測試測試"; 所以想請問是否可已在要寫入到元件的時候在改型態 在麻煩指教一下,如果我問題不請楚的話我會在附上範例 THX~ ===================引 用 herbert2 文 章=================== 您是否寫反了? 似應寫成 UnicodeString str = L"測試測試"; 各位大大 你好~ 請問一下變數如果是中文的話顯示會出現亂碼,這要怎麼處理? EX UnicodeString str = "測試測試"; Memo1->Lines->Add(L"" str); //這樣還是話出現亂碼 是我的IDE有哪邊沒有設定到還是有其他的問題呢? 以上在麻煩各位大大解答 |
ashin123
一般會員 發表:2 回覆:6 積分:1 註冊:2016-09-22 發送簡訊給我 |
FILE *iflie;
iflie = fopen(AnsiString(path).c_str(), "r"); ComboBox->Clear(); char txt[4096]; while (fgets(txt, 4095, iflie) != NULL) { str = (AnsiString)txt; ComboBox->Items->Add(str); } fclose(iflie); 用範例讓各位大大了解一下我的問題 目前希望可以將TXT檔的內容讀入ComboBox中 但在ComboBox中就會顯示亂碼,請問一下各位有甚麼解決的方式 ===================引 用 ashin123 文 章=================== DEAR H大 抱歉~ 我的問題可能沒有說的很清楚 因為我現在是將TXT檔裡面的值讀出來進行MEMO的放入 所以如果沒辦法先將讀到的內容先宣告成 str = L"測試測試"; 所以想請問是否可已在要寫入到元件的時候在改型態 在麻煩指教一下,如果我問題不請楚的話我會在附上範例 THX~ ===================引 用 herbert2 文 章=================== 您是否寫反了? 似應寫成 UnicodeString str = L"測試測試"; 各位大大 你好~ 請問一下變數如果是中文的話顯示會出現亂碼,這要怎麼處理? EX UnicodeString str = "測試測試"; Memo1->Lines->Add(L"" str); //這樣還是話出現亂碼 是我的IDE有哪邊沒有設定到還是有其他的問題呢? 以上在麻煩各位大大解答 |
pcplayer99
尊榮會員 發表:146 回覆:790 積分:632 註冊:2003-01-21 發送簡訊給我 |
|
ashin123
一般會員 發表:2 回覆:6 積分:1 註冊:2016-09-22 發送簡訊給我 |
你好~
我是使用C BUILDER XE 10.1版本 在一般的VCL中是可以正常顯示的,但當編譯成ANDROID就會出現亂碼 想請問一下是否有解決方案 我把問題簡化一下 是否可已在寫入元件前將字串的型態進行轉換呢? EX UnicodeString str = "測試測試"; Memo1->Line->add(str); //是否可以不要在一開始宣告成 str = L"測試測試" 有甚麼方式可已在Memo1中顯示不是亂碼呢? 以上在麻煩各位大大指教,這問題一直困擾著我 ===================引 用 pcplayer99 文 章=================== Delphi 的版本?D7之前,它不支持 unicode,需要自己处理。 如果是最近两年的版本,对于 Unicode 的处理,delphi 的 string 已经是支持 Unicode 的了。 具体你碰到的是什么问题?看你的帖子,看不出来你的具体问题是什么。如果是一个 TXT 文件的话,似乎应该是没有问题的。 |
pcplayer99
尊榮會員 發表:146 回覆:790 積分:632 註冊:2003-01-21 發送簡訊給我 |
|
ashin123
一般會員 發表:2 回覆:6 積分:1 註冊:2016-09-22 發送簡訊給我 |
DEAR P大
沒錯,就是這個意思 但英文不會出現論碼,中文才會 ===================引 用 pcplayer99 文 章=================== C BUILDER 就不清楚了。 你的意思是你在 CODE 里面写的 Memo1.Lines.Add('abcd') 这个 abcd 在 Android 里面显示乱码? 你的这个 abcd 是直接写进去的,还是: S: string; S := 'abcd'; Memo1.Lines.Add(S); 这样写进去的? |
tick228
高階會員 發表:1 回覆:47 積分:104 註冊:2003-11-03 發送簡訊給我 |
|
ashin123
一般會員 發表:2 回覆:6 積分:1 註冊:2016-09-22 發送簡訊給我 |
DEAR T大
感謝你的回覆 我有試過了 如果TXT檔在存檔時是使用UTF-8的格式儲存 利用LoadFromFile函式是可以讀取的 Memo1->Lines->LoadFromFile("D:\\UTF-8.txt"); 但人生最機掰的就是這個BUT!! 在TXT檔預設儲存的格式是ANSI 所以使用這個函式就會出現錯誤 Memo1->Lines->LoadFromFile("D:\\ANSI.txt"); 錯誤訊息為 no mapping for the unicode character exists in the target multibyte code page 在請教一下有什麼方式可以解決 THX~ ===================引 用 tick228 文 章=================== 要讀取文字檔, 會有內碼的問題(ASCII, UTF8, UTF16...), 自已開檔讀取, 需要讀取前置字元判斷內碼, 才知讀取後, 需不需做轉碼. 建議使用 TStrings 的 LoadFromFile() 功能, TStrings 會自動處理內碼問題. 例: Memo.Lines.LoadFromFile(FileName); |
tick228
高階會員 發表:1 回覆:47 積分:104 註冊:2003-11-03 發送簡訊給我 |
在 Android 系統下, 並不直接支援 ANSI Code (Android 系統內定 Code page 為 UTF8),
查看 TStrings 的 Source, LoadFromFile() 並沒判斷 ANSI (這應是 FMX 的 Bug). 所以, 可以試試下列方法: 1. 將所有文字檔, 皆存成 UTF8. 或 2. 強制用 ANSI(或 ASCII) 碼讀取, 如 LoadFromFile(FileName, TEncoding.ANSI) 或 LoadFromFile(FileName, TEncoding.ASCII) 試試吧! |
ashin123
一般會員 發表:2 回覆:6 積分:1 註冊:2016-09-22 發送簡訊給我 |
感謝T大
以測試成功可以使用 方式如下 Memo1->Lines->LoadFromFile(FileName, TEncoding::ANSI); ===================引 用 tick228 文 章=================== 在 Android 系統下, 並不直接支援 ANSI Code (Android 系統內定 Code page 為 UTF8), 查看 TStrings 的 Source, LoadFromFile() 並沒判斷 ANSI (這應是 FMX 的 Bug). 所以, 可以試試下列方法: 1. 將所有文字檔, 皆存成 UTF8. 或 2. 強制用 ANSI(或 ASCII) 碼讀取, 如 LoadFromFile(FileName, TEncoding.ANSI) 或 LoadFromFile(FileName, TEncoding.ASCII) 試試吧! |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |