C 基於json通訊中的中文的處理

2022-04-13 11:39:39 字數 1485 閱讀 3472

如果通訊中產生了\\u4e00-\\u9fa5範圍的中文的unicode**,而不是\u4e00-\u9fa5範圍的,那麼c#的處理就比較麻煩了。

它會把\\u4e00拆成部分來識別: \\  u4e00 , 神奇的是這種情況下,它會認為 u4e000是乙個整體。

正規表示式需要如此書寫: "[\\\\4e00-\\\\u9fa5]" , it works!!!雖然是兩個部分。

但問題是介面(winform)上顯示的就是unicode了,這個時候為了讓我們ui能夠正常顯示漢字,需要將\\替換為\。

貌似乙個replace就能搞定,非也!

方式1:

"\\" -> \ 字元

"\" -> 報錯。此路不通。

方式2:

這個是南轅北轍。

方式3:

自定義乙個演算法,來完成\\到\的轉換。

思路:每個字元,實際在計算機中是乙個數字。

比如 '1' ,對應的ascii碼是49.對於漢字,有gb2312碼,歸根到底還是乙個數字。乙個漢字對應乙個數字(通常表示的時候用16進製表示)

只要計算出,比如 \\u4e00的數字值(19968), 並將之對應到漢字即可。也就是 

char hz = (char)0x4e00

接下來的問題是將"\\u4e00"變成0x4e00,**如下:

#region 處理中文

/// /// \\u4e00-\\u9fa5 ->\u4e00-\u9fa5

///

///

///

protected static string process_cn(string val)}}

return ret;

}/// /// char -> string

/// 自帶的報引數錯誤(new string/string(char))

///

///

///

protected static string tostring(char c)

/// /// (0x)660e -> 26126

///

///

///

protected static int parseint(char c)

return n;

}/// /// (char)0~9a~za~z -> (int)0~15

///

///

///

protected static int parseint(char c)

;char arr2 = new char ;

for (int i = 0; i < arr1.length; i++)

for (int i = 0; i < arr2.length; i++)

return -1;

}#endregion

通訊中的backhaul

backhaul 可以翻譯成回程,也叫回程線路 在現有的無線通訊中,backhaul指的是基站和基站控制器之間的鏈結 一般使用者先接入基站,基站再與基站控制器通訊,然後進入核心網 在無線技術中,回程 backhaul 指的是從信元站點向交換機傳送語音和資料流量的功能。在衛星通訊中,回程是指衛星向自身...

通訊中的「交織」技術

在陸地移動通訊這種變參通道上,位元差錯經常是成串發生的。這是由於持續較長的深衰落谷點會影響到相繼一串的位元。然而,通道編碼僅在檢測和校正單個差錯和不太長的差錯串時才有效。為了解決這一問題,希望能找到把一條訊息中的相繼位元分散開的方法,即一條訊息中的相繼位元以非相繼方式被傳送。這樣,在傳輸過程中即使發...

DSP在通訊中的應用

在當前的dsp市場上,通訊裝置是其最大的使用者,以下是其中的幾個例子 1 數字式蜂房系統 數字式蜂房系統使用通用dsp來實現語音合成 speech synthesis 糾錯編碼 error correction coding 基帶數據機 baseband modem 以及系統控制等功能。a.語音合成...