GPRS傳送中文簡訊的問題

2021-06-16 04:40:33 字數 937 閱讀 7739

linux下,板子通過串列埠連線傳送中文簡訊,關於串列埠設定,及傳送英文簡訊很簡單就不說了,先說說如何做,及遇到的問題。

linux下,在vim(一定在vim中儲存中文,這個問題下面再提)儲存中文內容,通過iconv函式從當然語言編碼轉為gprs的ucs2的編碼。

int encode (char * message)

if(iconv(cd, &pin,&src_len,

&pout,&dest_len) == (size_t)-1)

iconv_close(cd);

strcpy(message,dest);

return strlen(dest);

}需要注意的就是iconv_open的二個引數,以前看到引數如gb2312 gb-zn,引數傳進去都是錯誤,我用的ubuntu,所以引數是utf8,雖然gprs用的ucs2的編碼,轉化的時候用unicodebig編碼的方式,傳送中文簡訊接收的時候,都能正常的顯示。

還有個問題是儲存中文的內容一定要用vim儲存,並且不能再用gedit開啟 或者你把原始檔拷到windows下新增幾行注釋,再拷回編譯照樣編碼轉化時出錯。雖然gedit上設定為utf8編碼,這樣問題依然存在。

另外乙個問題說,中英文簡訊混編的問題。linux下儲存中文,乙個中文字元,按unicode應該是二個位元組,但是vim儲存中文的時候,很少有情況是二個位元組,大部分情況是三個位元組。儲存英文本元那是很固定,都是乙個位元組。中英文混編的問題出來了,vim可以自動識別中英文,並且按三位元組和乙個位元組儲存,並且都不知道如何區分中英文(如果英文恰好作為中文的第乙個位元組,如何區分,是作為英文還是作為中文的第乙個位元組)。中英文簡訊混遍的問題,接受的手機顯示的時候,從字元開始以後都是亂碼。

另外需要注意的就是,gprs傳送at指令以/r結束,gprs回的時候大部分以/n/t開始和結束。簡訊內容以/x1a(ctrl+z)結束。還有個需要注意的是,有的時候每個位元組要格式化成二位的十六進製制輸出。

Android傳送簡訊字數問題

以前已經知道傳送簡訊有70個字元的限制,但真到用的時候才發現還是不了解。中文英文各算幾個字元?一開始按照老想法,gb碼中文2個位元組英文乙個位元組來算,按70個漢字的限制可以發140個位元組,但是傳送的時候總是出錯。後來在網上查了下簡訊的編碼才知道,現在傳送簡訊通常使用pdu模式,摘抄一段 在pdu...

物聯網智慧型網關 03 GPRS模組中文簡訊收發

在去年年初,就已經推出v1.0.0的gprs庫,不過在這個版本上只是實現了西文簡訊收發和字串方式的gprs資料通訊,功能還相對不完善 參見我以前的博文 gprs通訊實現 最近公升級的版本,對以上功能進行了大幅度的公升級改進,比如支援pdu方式收發簡訊 支援中文 彩信傳送 二進位制方式 gprs資料收...

簡訊傳送中文資料到手機顯示亂碼

共有三種方式來傳送和接收sms資訊 block mode,text mode和pdu mode。其中pdu mode被所有手機支援,可以使用任何字符集,這也是手機預設的編碼方式。傳送短訊息常用text和pdu protocol data unit,協議資料單元 模式。text模式 收發簡訊 簡單,實...