- ベストアンサー
機種依存文字の変換について
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
あるていど、プログラムが書けそうな人なのに、何が分からないのか、よく分かりません。 ・いわゆる全角の文字というのは二バイトだ ・対象となるファイルには、一バイトの文字も混在しているかもしれない ・漢字コードは何か分かっているか というあたりを抑えておけば、そう難しくはないでしょう。 一バイトの文字は混在していない、と前提を置けば、 for (;;) { 一文字目 = fgetc(...); if (ファイルのおしまいに来たら) { break; } 二文字目 = fgetc(...); if (一文字目 == 機種依存文字(その1)の一文字目 && 二文字目 == 機種依存文字(その1)の二文字目) { fputs(置き換える文字列, …); } else if (機種依存文字(その2)も同様) { … } else { /* 置き換えなくて良い場合 */ fputc(一文字目, …); fputc(二文字目, …); } } ってな感じでしょうか。 ただ変換してゆくだけだったら、fgetc() で取得した文字を貯めておく必要はないですよね。 もし、一バイト文字も混在しているのであれば、fgetc() / fputc() ではなく、fgetwc() / fputwc() という マルチバイト文字を扱う関数の方がシンプルに書けるでしょう。
その他の回答 (1)
- nitscape
- ベストアンサー率30% (275/909)
1.機種依存文字は文字としてヘッダに定義し、比較できるでしょうか? できます。 文字というのは単なる数値(「0x6a」のようなメモリ上の数値)なので... #define DEPENDENT_CHAR_01 ((unsigned char)0x6a) #define DEPENDENT_CHAR_02 ((unsigned char)'A') #define DEPENDENT_CHAR_03 "あ" のようにできます(最後の行の定義は2バイトなので文字列にしています。memcmp()などで2バイト比較するなり1バイトずつ取り出して比較します)。 2.機種依存文字であると判定した場合の文字変換方法がわかりません。(memcpy?) #1で書かれているとおりです。 確かに#1さんに同意見です。あとちょっとで何も聞かずに独力で実現できるところまできていますよね。がんばってください。
関連するQ&A
- 「機種依存文字を変換」って、どういうことでしょうか?
カテゴリー違いでしたらすみません。 最近、ここで回答したり質問したりする際に、毎回「入力したテキストに機種依存文字がありましたので変換させていただきました」というエラーメッセージが出ます。 機種依存文字って、私の知っている限りでは「まる1(数字を丸で囲ってある文字)」くらいしか思いつきませんが、何がいけないのでしょうか? ここまで見ていただくと分かるように、私はギャル文字も「☆」や「♪」などもあまり使いませんし、顔文字も頻繁に使わないのにどうして毎回エラーになるんだろう…と思っています。「ハート」みたいなタグを使うような絵文字も使いません。使えませんと言うほうが正しいですが(笑)。 機種依存文字を削除したというエラーメッセージが出る前と出たあとでも、全く文章に違いはないのです。 何がいけないのでしょうか、ご存知の方教えてください。
- ベストアンサー
- その他(生活・暮らし)
- これは、機種依存文字ですか?
こんにちは。 HTML文書をWebにUPする場合についてお尋ねします。 1等数字を円で囲ったものや半角カナがまずいのは判っているのですが、 もしかして、! の半角もまずいのでしょうか。 「え! そうだよね?!」と言ったときのさいごの?!をいつも半角にしてたのです。(全角だと間延びしてるので) それから、「まる」と書いて変換できる黒丸、白丸も(MSIMEです)機種依存文字でしょうか。 ・・・(三点リーダー)もこの三つでまとめて小さな文字に変換できますが、それも駄目でしょうか。 判っていたつもりなのに、だんだん不安になってきました。 よろしくお願い申し上げます。
- ベストアンサー
- その他(インターネット・Webサービス)
- 機種依存文字のチェックについて
javaでの機種依存文字についての質問です。 今、WebアプリケーションをUNIXで構築中なのですが 機種依存文字のチェックで困っています。 Windowsの機種依存文字は情報も多く NEC特殊文字、NEC選定IBM拡張文字、IBM拡張文字 を入力されたら Unicodeのテーブルとつき合わせてエラーという風にしたいと思っています。 ただマッキントッシュの機種依存文字に何があるかがよくわかりません。 とりあえずマッキントッシュの機種依存文字のUnicode Tableなんてないでしょうか? それかjavaで日本語の機種依存文字をチェックするクラスライブラリとかないでしょうか? 文字コードについて素人なので質問自体がおかしかったらすいません。 よろしくお願いします。
- 締切済み
- Java
- VB6 機種依存文字の変換
文字列中の「㈱」(※1)といった機種依存文字の文字コードを (株)(※2)や丸付き数字などの文字に変換する方法ってありますか? replace関数で変換するしかないでしょうか? ※1:&#は実際は半角です。 ※2:(株)は実際には1文字です。
- ベストアンサー
- Visual Basic
- 機種依存文字の文字コード変換
現在、Shift-JISでCGIを作成しています。言語はPerlです。HTMLファイルから送信された文字をDBに登録するのですが、CGIをShift-JISで作成しているのに、DBがEUCとなっているため、jcode.plを利用して文字コードを変換しています。 しかし、文字が機種依存文字である場合、jcode.plでは文字コード変換ができないようで文字化けを起こした文字をDBに登録しようとしてエラーを起こしてしまいます。 何とか機種依存文字をコード変換したいのですが、可能でしょうか?
- ベストアンサー
- Perl
- 機種依存文字って?なぜ使ってはいけないのですか?
質問や回答をする際 ほとんど「機種依存文字」のため変換しますと 表示されます。 調べてみましたが 何でいけないのかがよく分かりません。 具体的にご説明お願いいたします。
- ベストアンサー
- その他(生活・暮らし)
- 全角の ? は、機種依存文字か?
建設キャルスの 対応に追われています。 そこで 全角文字の ? は 機種依存文字に該当しますか?もし そうなら 建設キャルスでは 使用できません。 理由と 答え おねがいします。
- ベストアンサー
- その他(インターネット・Webサービス)
- 機種依存文字などについて
当方、ウィンドウズを使用しており、機種依存文字はマックでは見えない、ということを大分前に聞きました。 このときに聞いた機種依存文字は、ハートマークやスペード、丸付きの数字などですが、 半角のカタカナって、マックでは見えないのでしょうか? また、マックでは、ウィンドウズでは変換できないハートなどのトランプの記号が打てるそうですが、 その文字をマックで打ったら、ウィンドウズでは見えないのでしょうか? 教えてください
- ベストアンサー
- Mac
- OE5 機種依存文字の?変換を止めたい
Microsoft Outlook Express バージョン : 5.0.3 Macintosh Edition を使用しています。 このメーラーはおせっかいにも、受信したメール本文中の機種依存文字を?マークに変換してくれちゃいます。 例:(株)、Kg、 この、「小さな親切、大きなお世話」をやめさせる方法は無いでしょうか?
- 締切済み
- Mac
- c言語 型変換について
c言語 型変換について 下記のように文字コードは、unsigned int型('B')をunsigned char 型(str[1] ) 格下げする型変換する規則を教えてください。 *質問ソースプログラム: int main(void) { char str[4]; /* 文字列を格納する配列 */ str[0] = 'A'; /* 代入 */ str[1] = 'B'; /* 代入 */ ・・・・・・ printf("size B %u\n",(unsigned)sizeof('B')); printf("size str[1] %u\n",(unsigned)sizeof(str[1])); * 実行結果 size B 4 size str[1] 1
- ベストアンサー
- C・C++・C#