簡體   English   中英

不包含ASCII的定義

[英]Does not contain definition for ASCII

所以我正在嘗試使用藍牙模塊(HC-06)從我的手機讀取發送到我的Netduino板的數據。 但是,我無法將字節轉換為文本,因此我可以比較我發送的字符,從而將它們轉換為條件語句。 從我所看到的,我需要在C#中使用以下代碼行將其從字節數組更改為字符串,但是在我的范圍內找不到類的定義!! 這是一行:

Encoding.ASCII.GetString();

這是我得到的錯誤:

'System.Text.Encoding' does not contain definition for 'ASCII'

我正在使用.Net Micro Framework 4.1版和Visual Studio Express 2012 IDE。 我正在使用原始的NetduinoNetduino 14.1 Framework

不包括ASCII編碼,因為它不是必需的。 UTF-8與ASCII相同,MSB在文本流中無關緊要。 只要內容被正確發送和接收,您就應該能夠使用UTF8編碼獲得正確的文本表示。 例如,如果緩沖區包含您收到的文本...

Debug.Print(new String(Encoding.UTF8.GetChars(buffer, 0, buffer.Length)));

Encoding.ASCII存在於.NET 4.7.2標准中,但不是所有地方都存在。 看到

https://docs.microsoft.com/en-us/dotnet/api/system.text.encoding.ascii?view=netframework-4.7.2

如果像我一樣,因為您正在開發一個可移植的庫,您偶然發現了這個頁面,您會注意到應用於該部分的頁面底部,Encoding.ASCII在所有上下文中都不可用。

無法使用Anywhere 7位編碼,您需要手動過濾掉任何8位及以上的字節並使用Encoding.UTF8。 一種簡單的方法是使用正則表達式替換。 如果您可以在字符串中允許空值,則可以修改以下代碼,我將其排除。

String MyASCIIString = Encoding.UTF8.GetString(MyByteArray);
Regex NotASCII = new Regex("[^\u0001-\u007f]+");
MyASCIIString = NotASCII.Replace(MyASCIIString, "");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM