ID非公開さん
2022/7/1 15:13
1回答
Xcode, Swift, SwiftUIでiOSアプリの勉強をしています。 String型のテキスト文字列をUTF8でtxtファイルに保存したいです。
Xcode, Swift, SwiftUIでiOSアプリの勉強をしています。 String型のテキスト文字列をUTF8でtxtファイルに保存したいです。 保存は出来ているのですが、ShiftJISになっているように見えています。 ■状況 iPhoneのDocumentフォルダー内に保存したファイルをメール添付でWindowsパソコンに送りまして、さくらエディターで開いてみましたところ、エンコードがShiftJISで判定されていました。 ■ソース ファイル出力部分は、以下のようなソースです。 let text = "テストてすとabc123" do { try text.write(to: fileUrl, atomically: true, encoding: .utf8) } catch { print("Error: \(error)") } 上記のソースは以下を参考にさせていただきました。 https://www.ohitori.fun/entry/how-to-save-text-file-in-swift5#%E6%96%87%E5%AD%97%E5%88%97%E3%82%92%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AB%E4%BF%9D%E5%AD%98%E3%81%99%E3%82%8B 最初は「古いファイルが残っているのかな?」など考えてみましたので、 ソース側で、出力するファイル名を変えてみて再ビルドもしました。 出力されたファイル名は確かに変わっているので、encoding: .utf8 で 指定したソースで出力されたファイルと判断しています。 原因、解決方法などお教えいただきたいです。 やりたいことは、テキストをUTF8エンコードでファイル保存したいです。 宜しくお願いします。
ベストアンサー
じっさいに、SwiftでString型の文字列を、write(〜)でファイル書き出ししたものの、テキストエンコーディングを調べましたが、正しくUTF8でした。 > ■状況 > iPhoneのDocumentフォルダー内に保存したファイルをメール添付でWindowsパソコンに送りまして、さくらエディターで開いてみましたところ、エンコードがShiftJISで判定されていました。 これは、「さくらエディター」というアプリケーションが、正しいエンコード判定をできていないとみるしかありません。(私はそのアプリケーションを使ったことも見たこともないので、正確な判断はいたしかねます。が……) Swiftが書き出すテキストファイルにはファイルヘッダ(いわゆるUTF8のBOM)がついていないため、エンコードを正確に判定できないのではないでしょうか? 確実な判断をするためには、Safariで書き出したテキストファイルを開いてください。「表示」メニューの「テキストエンコーディング」で、「Unucode (UTF-8)」を選択し、文字化けなしでテキストが表示されれば、UTF8で間違いないと判断できます。
ID非公開さん
質問者2022/7/1 19:07
お調べいただきありがとうございました。 すみません、ソフトウェア名は正しくは「サクラエディタ」でした。 Windowsでは割と有名なfreeのテキストエディタですが、結果から想定するには、誤検知の可能性が高そうですね。
質問者からのお礼コメント
ありがとうございました。
お礼日時:7/1 19:07