關於XE10下Indy傳送字串編碼的問題

2022-06-30 04:06:08 字數 771 閱讀 8247

在與硬體對接的過程中,之前用d7環境下的udpserver.post傳送的指令,硬體可正常識別並正常顯示,

後來使用到xe10,重新編譯之前的原始碼,發現所有漢字亂碼顯示了;

後通過對接收資料發現,實際傳送的編碼有異常,而且英文與數字都正常,就漢字顯示不正常,

唯一可能就是字元編碼的問題了

d7環境下傳送的是預設的string資料型別

xe10下傳送的也同樣是string型別,

要解決亂碼問題,處理方法就是在xe10環境下,udpserver.post時,注意設定一下傳送的指令編碼

常規傳送為:udpserver.post(ip,port,data);

在xe10下,加上編碼格式: udpserver.post(ip,port,data, indytextencoding(tencoding.ansi));

在xe10下共提供7種格式: (經測試 default傳送的指令編碼與 ansi 一樣)

indytextencoding(tencoding.ansi)

indytextencoding(tencoding.ascii)

indytextencoding(tencoding.bigendianunicode)

indytextencoding(tencoding.default)

indytextencoding(tencoding.unicode)

indytextencoding(tencoding.utf7)

indytextencoding(tencoding.utf8)

Windows下Python字串編碼問題

python語言實際上有三種字串,通常意義的字串 str unicode字串 unicode 和抽象類basestring,其中basestring不可例項化。在windows系統下的cpython直譯器輸入 st1 中文 st1 xd6 xd0 xce xc4 type st1 str st2 s...

關於字串漢字編碼的判斷

首先,這個問題不嚴謹了,如果給定乙個任意字串,不可能斷定它是否包含漢字,只有知道其編碼方式才可能判斷,比如已知為utf 16,可根據unicode標準漢字 點範圍判斷,如果是ansi本地化編碼如gb2312 1980 雙位元組最高位為1,範圍 1 0xa1 0xfe 2 0xa1 0xfe 7445...

php 不同編碼下的字串長度區分

utf 8的中文字串是三個位元組 複製 如下 awoym php 編碼utf 8 echo strlen 測試文字a測試文字 echo echo mb strlen 測試文字a測試文字 utf 8 輸出 25 9 gb2312的中文字串是二個位元組 複製 如下 編碼gb2312 echo strle...