前にやってみた、これ。
【Swift】String と Data の変換
👉 https://t.co/ORzWMGgSTA#プログラミング #Swift— chanzmao (@maochanz) June 4, 2024
2つの型(プロトコル)の間を相互に変換するだけでも、いろんな書き方があるのだな。
などと思いつつ気になってたのが文字コードの変換。
今回、おおまかに整理しておきたい。
🧑🏻💻 String の内部エンコーディングは UTF-8
Swift 5 switches the preferred encoding of strings from UTF-16 to UTF-8 while preserving efficient Objective-C-interoperability.
String 内部のエンコーディングは「UTF-8」になったらしいです。
🧑🏻💻 String、 Data とファイル間での相互変換
図で。大体こんな。
まずは、エンコーディングの引数名が、encoding:
, using:
, as:
と多様なので初見、分かりづらかった。
「String から」または「Stringへ」変換する場合に
「相手」 (「変換先」または「変換元」) のエンコーディングを指定する。
String 自体は「UTF-8」として意識。
Data と ファイル間の変換にはエンコーディングの指定は不要。
Data はそれぞれに変換済みのバイトシーケンス。
🧑🏻💻 変換してみる
コードを書いて試してみます。
👉 【Swift】よく使いそうな String の format
"あいうえお"
.data(using: .shiftJIS)!.map { String(format: "%02X", $0) }.joined()
// 10 bytes 82A082A282A482A682A8
からスタートして一通り。
以前書いた extension を使っています。
👉 【Swift】ファイルやディレクトリ操作するための extension をまずは作った
これで大体いけるはず。
注意としては、「変換できない文字もある」ということ。
o Shift_JIS → UTF-8
x UTF-8 → Shift_JIS
対応する文字がない。
🧑🏻💻 参考
👉 String.Encoding | Apple Developer Documentation
👉 shiftJIS | Apple Developer Documentation
👉 init(data:encoding:) | Apple Developer Documentation
👉 init(contentsOf:encoding:) | Apple Developer Documentation
👉 data(using:allowLossyConversion:) | Apple Developer Documentation
👉 write(to:atomically:encoding:) | Apple Developer Documentation
👉 init(contentsOf:options:) | Apple Developer Documentation
👉 write(to:options:) | Apple Developer Documentation
【Swift】ファイルやディレクトリ操作するための extension をまずは作った
👉 https://t.co/Z2zVpDvLkH#プログラミング #Swift #ios— chanzmao (@maochanz) June 10, 2024
【Swift】FileManager を使いたい
👉 https://t.co/OSjsaouCDB#Swift #ios #プログラミング— chanzmao (@maochanz) June 10, 2024