FileX on USB Mass Storageのスタックを使用してUSBメモリ内にファイルを作成しようとしています。
ファイル作成にはUINT fx_file_create(FX_MEDIA *media_ptr, CHAR *file_name)使用します。
この時、SJISコードのファイル名のファイルを作成しようとした場合に特定の文字が含まれている場合に
作成されたファイル名が文字化けします。原因はなんでしょうか。SJISコードは未対応なのでしょうか。
作成で指定したファイル名は”テスト.(拡張子)”です。
> 特定の文字が含まれている場合に作成されたファイル名が文字化けします。特定の文字って、どういうものでしょう?↓ こういう種類の話??Shift-JISの文字化けhttps://www.kent-web.com/pubc/garble.html
どういう文字コードが受け付けられるかはファイルシステムで決まるものだと思いますが無事に受け付けられているファイルもあるのならShift-JISを使うこと自体には問題がないのでしょうね。
0x5c問題があるのは把握しております。それ以外の問題として捉えています。
現状確認できているのは、、
あいう.拡張子(0x82a0,0x82a2,0x82a4)は文字化けなし
アイウ.拡張子(0x8341,0x8343,0x8345)は文字化けなし
テスト.拡張子(0x8365,0x8358,0x8367)は文字化けあり eXg.拡張子(0x65,0x58,0x67)としてファイル生成
というような具合です。
頭が0x83から始まるものかと思えばアイウは正常に生成されますし。。
何が要因で文字化けしてしまうのかがよくわからない状態です。
FileXではunicode用の関数が別にありますね。unicode用ではない普通の関数がマルチバイトにどこまで対応できているかが疑問に思われます。https://docs.microsoft.com/en-us/azure/rtos/filex/appendix-a#unicode-services
ファイルシステムは何?
>ファイルシステムは何?
windows10のアプリケーションで作成したファイルのため、NTFSとなります。
unicode用の関数もあるので、SJISをunicodeに変換できればとも考えましたが
一筋縄ではいきませんよね。。