首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

iOS Swift 中 NSData 轉換為 NSString 的正確姿勢

     編輯:程式設計綜合問答

快速答案

使用 NSString(data:encoding:) 初始化器,指定編碼為 .utf8(對應 NSUTF8StringEncoding)。

代碼範例

let yourData: Data = ... // 你的 NSData / Data 物件
if let string = String(data: yourData, encoding: .utf8) {
    print("轉換成功: \(string)")
} else {
    print("資料非有效 UTF-8 編碼")
}

常見編碼對照表

Swift EncodingFoundation 常數適用場景
.utf8NSUTF8StringEncoding現代應用首選,支援全 Unicode
.utf16NSUTF16StringEncoding需處理 UTF-16 資料時
.asciiNSASCIIStringEncoding純 ASCII 文字
.isoLatin1NSISOLatin1StringEncoding西歐語系舊系統
.windowsCP1252NSWindowsCP1252StringEncodingWindows 系統匯出資料

進階技巧

  • 容錯轉換:若資料可能包含無效位元組,可用 String(decoding:as:)(Swift 5+)自動替換非法序列為 :
    let str = String(decoding: yourData, as: UTF8.self)
  • 舊版 Objective-C 互通:
    NSString *str = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
  • 效能提示:大量資料轉換時,優先使用 Data 直接處理,避免頻繁建立中間字串物件。

避坑指南

  1. 切勿假設所有資料皆為 UTF-8,網路請求回應請檢查 Content-Type 標頭中的 charset。
  2. NSString.init(data:encoding:) 回傳可選型別,務必安全解包,否則會崩潰。
  3. 若轉換失敗,嘗試 .isoLatin1 或 .windowsCP1252 作為後備方案。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved