プロが教える店舗&オフィスのセキュリティ対策術

こんにちは。

私、入力ファイルをVisual Studio 2013で作ったexeファイルへドラッグ&ドロップをして出力テキストファイルを作ると言うことをしています。
具体的には、入力ファイルはs-jisの形式で、Visual Studioのソースファイルもs-jisで、このソースファイル内でも文字を加えて、そしてs-jis形式のテキストファイルとして出力しています。

ココで最近、入力ファイルやソースファイル内で [ñ] [á] などのs-jisでは保存できない文字を利用する必要ができました。
そこで入力ファイルを単純にutf-8(BOM無し)にしてみましたが、ドラッグ&ドロップ時に異常終了しました。utf-8ファイルをs-jisソースファイルで出来た実行ファイルに入れたのだから当然かな?などと適当に考え、次に本丸のソースファイルもutf-8にしてみました。ですがエラーが出ました。

どうも検索したらVisual Studioではutf-8を利用するにはBOM有りで保存するのだなと思い、その様に保存して実行ファイルを作りutf-8ファイルをドラッグ&ドロップしましたが異常終了しました。

何故かな…?と思ったのですが、どうも書き出すときの使っている関数が悪い?などと思い始めました。
fprintf、fputs、fputcなど。これらがutf-8のファイル出力に対応していないかなと?

ちなみに、出力ファイルはutf-8のBOM無しにしたいです。


私の悩みを解決するために、どなたか方法や役に立つウェブサイトを御教示願えないでしょうか?

解決するには、入力ファイルから読み取るfgets等も変える必要があるかな…。

すみません、よろしくお願いいたします。

A 回答 (3件)

>久しぶりのC言語で文字コード変換してみる


http://brokendish.org/ubuntu/3434/

 内容を細かく確認を取っていません。


 このような感じのようです。

>●プログラムの概要
>sjis←→utf8の文字コード変換を行う
>文字列を入力して、変換不可能な文字があった場合「?」に置き換える。
>文字コード変換にはiconv関数を利用する。
>全角文字を1文字ずつ取得するためには「mblen関数」を利用します。

参考用
>複数のファイルを一括で指定した文字コード変換してくれる便利なフリーソフト「KanjiTranslator」
http://billyboy.blog81.fc2.com/blog-entry-185.html

 どれだけ検索をしてみてもこの辺りが限界です。

 情報が古かったですが「nkf」と呼ばれるライブラリを使う投稿があったくらいでした。

 手抜きをして良いならば、「TextBoxオブジェクト」(VBとC#など)を用意して文字列のファイルをオブジェクトとして読み込んでエンコードを指定して保存するとかでしょうか。

>文字コードを指定してテキストファイルに書き込む
http://dobon.net/vb/dotnet/file/writefile.html
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

すみません、今必死でソースコードをいじっています。後ほど、もしくは再質問となるかもしれません。もうしわけありません。

お礼日時:2015/04/14 00:52

まじめにがんばるなら


ICU (not International Christian University nor Intensive Care Unit)
とか>#2.
    • good
    • 2
この回答へのお礼

ご回答ありがとうございます。

すみません、今必死でソースコードをいじっています。後ほど、もしくは再質問となるかもしれません。もうしわけありません。

お礼日時:2015/04/14 00:52

>文字コードを判定して 指定の文字コードに変換するサンプル(C#.NET)


http://homepage2.nifty.com/nonnon/SoftSample/CS. …

 「異常終了しました」を繰り返し質問文に現れますが、文字コードの変換部分で終了するのですか?
    • good
    • 0
この回答へのお礼

LEVELUP100さん、
ご回答ありがとうございます。

ご指定のサンプル、C#とのことですが自分はCで書いています。VBで混在可能でしょうか?


>「異常終了しました」を繰り返し質問文に現れますが、文字コードの変換部分で終了するのですか?
すみません、放り込んで異常終了…だけで諦めてました。時間が出たら確かめます。お待ち頂けますでしょうか?

お礼日時:2015/04/12 16:44

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!