FileXにおけるSJISコードのファイル名のファイル作成で文字化け

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を使うこと自体には問題がないのでしょうね。

  • 基本的に使えないです。最低でもショートファイル名はどのシステムでも解釈が出来るキャラクタセットを使わないと困ります(IBM3270表示・印字可能キャラクタならインターネットプロトコルでも規定されているので余程でない限り解釈できます) SJISは解釈が不十分なシステムでで見た場合バックスラッシュが含まれている文字列になるので結構あぶないですよ

  •  > SJISは解釈が不十分なシステムでで見た場合バックスラッシュが含まれている文字列になるので結構あぶないですよ

    ファイルシステムがFAT32ならShift-JISもアリですが、NTFSなどUNICODEを前提にした所に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に変換できればとも考えましたが

    一筋縄ではいきませんよね。。