A 回答 (9件)
- 最新から表示
- 回答順に表示
No.9
- 回答日時:
HEW(SHなのか、H8なのか、M16CやM32Cなのか分かりませんが...)のような組み込み向けの環境では、ロケールに関しては最低限の実装しかされていないことが多いはずです。
ですので、表引きにすることをお勧めします。
UTF-8 → UTF-16の変換をまず行い(サロゲートは無視しても大丈夫ですよね?)、対応するシフトJISのコードを格納した配列を用意してください。
実際には65536個の配列にする必要まではないので、シフトJISに変換可能な部分だけの(歯抜けの)配列をいくつか用意することになるかと思います(ROMサイズが許せば、ベタで持った方が楽ですが...)。
この回答への補足
M16Cです。
表引きのサンプルコードや参考になるHPなどはありませんでしょうか?
また、最低限の実装しかしてないとして、
どの程度できるのか試してみたいのですが、
それのサンプルなどもないでしょうか?
No.8
- 回答日時:
#7です。
>最終的な環境は組み込み環境でファイルシステムは
>TOPPERSでも採用されているFatFSを使います。
>コンパイラはHEWで、書き込まれる先はSDです。
なるほど。
しかし、それでしたらいっそ、ファイルシステムをUTF-8で作ってしまってはどうでしょう?
sjisと使用する文字コードの範囲もそう変わらないですし、大きな問題は無いように思えます。
むしろsjisの2バイト目の¥コードの問題を考慮しなくていい分、実装が楽かも。
ただ、ファイル名が8.3しかないので、UTF-8だと文字数が入らないという問題はありますかね。
もっとも、sjisを使っても4文字しか入りませんし、「テストです.txt」はどのみち無理。となると、sjisでもUTF-8でもない、独自のコードにしてしまうという手もあるかもしれません。
この回答への補足
すでに出来ているファイルシステムをいじるよりは、
文字コード変換の方が簡単かなと思いました。
それとSDで保存するのですが、windows上でもそのSDは見るので、
Shift-JISの方が助かるのです。
「テストです.txt」の文字数は単純に間違えました。すいません。
HEWにもwctomb関数があるので、それで行ってみようと思ったのですが、
0バイト変換か-1を返すかのどちらかになってしまい、
なかなかうまく行きません。
"%E3%83%86%E3%82%B9%E3%83%88%E3%81%A7%E3%81%99.txt"
を
30C6 30B9 30C8 3067 3059 ".txt"
と変換しているのですがこれがまずいのかもしれません。
No.7
- 回答日時:
>最終的にはその日本語ファイルのオープンを行いたいです。
環境は何でしょうか?
オープンに使われる関数/APIがShift-JISに対応していないと、
作業自体がまったくの無駄ですよ。
それに、Windowsであれば、Unicodeのファイル名のままでファイルのオープンが可能ですので、Shift-JISへの変換は不要です。
環境によっては、UTF-8のままファイルをオープンできることもあるようですので、それなら変換は一切不要ですね。
この回答への補足
最終的な環境は組み込み環境でファイルシステムは
TOPPERSでも採用されているFatFSを使います。
コンパイラはHEWで、書き込まれる先はSDです。
なので、ファイルオープンの為にはファイル名は
Shift-JISである必要があるかと思っています。
変換プログラムのデバッグ自体はwindowsでおこなっていますが・・・。
No.6
- 回答日時:
規格厳密合致プログラムを書くには、自前で表を作るしかありません。
しかし、処理系を特定してもよいのであれば、標準関数で実現することは可能です。
例えば、setlocaleでLC_CTYPEのロケーるをシフトJISおよびUTF-8に設定でき、かつwchar_tがそれぞれのロケールにおいて同じ内部表現を用いるのであれば、mbtowc/wctombまたはmbstowcs/wcstombsの組み合わせで変換することができます。
Amendment1以降(__STDC_VERSION__ >= 199409L)であれば、mbrtowc/wcrtomb、mbsrtowcs/wcsrtombs、またはsprintf/sscanfの組み合わせで変換することもできます。
この回答への補足
mbtowc関数はHEWで使えたので、実験してみる価値はありますね。
setlocaleでシフトJISを設定できるかとか、
デバッガでマルチバイト文字が見れないとか色々調査が必要です。
とりあえず、mbtowc自体を使ったことがないので、
windowsで実験してみます。
No.5
- 回答日時:
ShiftJIS⇔JIS⇔EUCは計算で変換できますが、Unicodeはテーブルを使わなければ変換できません。
ですので自前で処理したいなら、変換表を用意しなければなりません。
No.2
- 回答日時:
>Unicode→Shift-JISが全く検討が付かない状態です。
WindowsのVisualC++にはそんな関数があったような
WideCharToMultiByte( )だったかな
もちろん環境依存の非標準関数のはずです
No.1
- 回答日時:
>標準関数
まずここが無理。
なぜならCは(略)規格が古く(略)文字コードという概念が(略)無いから。
その文字列を一端バイナリ変換してデコードだね。
http://www.google.com/search?lr=lang_ja&q=%E6%96 …
この回答への補足
回答ありがとうございます。
一応、'%'を見てバイナリデータに直すところは作ってみました。
そのバイナリデータを、UTF-8→Shift-JISにしたいのです。
多分、UTF-8→Unicode→Shift-JISという流れになると思うのですが、
UTF-8→Unicodeはなんとなく分かるのですが、
Unicode→Shift-JISが全く検討が付かない状態です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 日本語 「文章の使命は読み手に伝わることです。」は悪文ですか? 5 2022/05/14 17:15
- 物理学 プラズマ運転と核融合運転は、違うものなのでしょうか? プラズマ運転と核融合運転は、全く違うものなので 2 2023/04/30 16:34
- サバイバルゲーム このタイプの差し込み口ってなんの種類か分かりますか? 3 2022/07/29 15:32
- ZOZOTOWN このタイプの差し込み口ってなんの種類か分かりますか? 2 2022/07/29 15:31
- Word(ワード) リンクが作動しない 7 2022/12/23 14:15
- その他(占い・超常現象) 五鈷杵付きオニキスと三眼天珠、どっちのブレスレットが良いか? 1 2022/06/25 20:53
- 飲み物・水・お茶 どんな味?でした? 「スコール とちおとめ」 飲んだ方、お願いします。 https://www.go 1 2023/07/17 07:05
- その他(パソコン・スマホ・電化製品) Google ドライブのようにXnBay ストレージ サーバのストレージスペースをコンピュータのエク 2 2023/04/28 19:09
- 工学 プラズマ運転と核融合運転は、違うものなのでしょうか? 1 2023/04/30 10:14
- その他(パソコン・周辺機器) インターフェースがtype-bのタブレットを使っているのですが、以下のようなデバイスはありませんかね 1 2022/06/11 07:56
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EBCDIC⇒SJIS変換の方法
-
セル内の文字列が日本語か英語...
-
std::stringからLPCWSTR型への変換
-
ふりがなをアルファベット化す...
-
「彡」って文字はなんという文...
-
ExcelVBA実行後に時々落ちる
-
英数字を含む文字列(0-9,A-Z)...
-
sedで日本語の置換方法について
-
2バイト文字をJEFからSJISに変...
-
Symfowareでのデータ型変換につ...
-
画像ファイル等→16進
-
Excel vba で1と10を正確に判断...
-
友人とのラインで 「~MBと書く...
-
Perlコードを、自動的にPHPコー...
-
C言語でUTF-8コードで読み込ん...
-
HP-UXでの文字コード変換方法
-
Webブラウザから入力する漢字コ...
-
繁体字の文字コード?変換
-
ビット反転(Not)が機能しない
-
C#で16進数からASCIIへの変換の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EBCDIC⇒SJIS変換の方法
-
セル内の文字列が日本語か英語...
-
「彡」って文字はなんという文...
-
std::stringからLPCWSTR型への変換
-
VS 2008(VB.NET)
-
ExcelVBA実行後に時々落ちる
-
ふりがなをアルファベット化す...
-
Excelマクロにて30分単位の計算...
-
Symfowareでのデータ型変換につ...
-
英数字を含む文字列(0-9,A-Z)...
-
JIS → S-JIS コード変換するには
-
sedで日本語の置換方法について
-
COBOLによる全角・半角混...
-
フォームのコントロールのバッ...
-
数字5桁文字コード?
-
バイナリデータ→ASCII 変換プ...
-
2バイト文字をJEFからSJISに変...
-
VBScript ASC関数:文字エンコ...
-
CString ←→ BSTRの変換について
-
入力した文字を全て自動で全角...
おすすめ情報