簡體   English   中英

設備名稱出現混亂,導致NSOutputStream套接字出現問題

[英]Tilde in device name causing problems with NSOutputStream socket

在iPhone和我們應用程序的桌面版本之間的聯網中,iPhone發送設備名稱以供在桌面上使用。 問題在於某些Beta測試人員的設備名稱中帶有波浪號(`)。 由於某種原因,當它在設備名稱中時,它會阻止套接字發送實際的字符串數據。

我曾嘗試在發送設備名稱之前先清理設備名稱,但是設備名稱(在iTunes中輸入的)中的波浪號在運行時無法識別為波浪號。 這是無效的代碼:

NSString *safedevicename = [[UIDevice currentDevice] name];
safedevicename = [safedevicename stringByReplacingOccurrencesOfString:@"`" withString:@"'"];

它不會出現代字號,並且不會替換任何內容。 我還使用rangeOfString搜索波浪號,但不返回任何內容。 我100%確信至少在iTunes中輸入的字符是波浪號。

另外,在控制台上打印字符串的描述時,字符編碼為 ,當將懸停在變量上時,它會顯示為一個句點.

有人知道我該如何抓住這個角色並將其從那里移走? 另外,在目標C中是否沒有辦法更輕松地清理字符串以確保通過套接字發送是安全的?

編輯:還有一些可能有用的東西,將NSString寫入NSOutputString我使用以下代碼行:

len = [oStream write:[[writeString dataUsingEncoding:NSASCIIStringEncoding] bytes] maxLength:[writeString lengthOfBytesUsingEncoding:NSASCIIStringEncoding]];

編輯#2:這行代碼可以代替Tilde,但我確定還有其他字符需要擔心:

safedevicename = [safedevicename stringByReplacingOccurrencesOfString:@"\\u00b4" withString:@"'"];

Jason的評論是正確的答案:我需要將編碼從NSASCIIStringEncoding更改為NSUTF8StringEncoding

暫無
暫無

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

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