2017年12月15日金曜日

Swift4 utf-8をshift-jisに変換

本来であれば、サーバ側のインターフェースはUTF-8にして欲しいところですが、諸事情によりshift-jisの文字列をクライアント側で作成しなければいけない場合があって、変換しました。あとで絶対忘れるので、備忘として。

let str = "ほげ"
let sjisStr = str.cString(using: String.Encoding.shiftJIS)

ここでそのまま表示できない形になります。
こんな感じ
[-126, -39, -126, -80, 0]

これはCのcString型になります。実態は[CChar]型です。

これを逆変換でString型に持ってくるのは

let result:String = String.init(cString: sjisStr!)

Swiftの文字列操作周りは未だにコロコロと表記が変わるのでSwift3まで使えた記法がSwift4から全然使えなかったりします。
特にsubStringがなくなってしまったので、文字列操作は結構戸惑います。慣れれば表記が統一されているので使いやすいんじゃないかと思うんですが。。。

なかなか、追っかけるのが大変な言語ですね。