漢字のバイト数について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
教えてほしいです

漢字のバイト数について

#1

投稿記事 by 教えてほしいです » 12年前

http://dixq.net/g/50.html
こちらのサイトでサウンドノベル風の文字の表示方法を学んでいます。
バイト数を2ずつプラスして全角を1文字ずつ表示していくとの事ですが全角文字のバイト数が一定になっていません。
上記のサイトに載っているコードを入力してもdisp[80]をdisp[82]にしないとエラーが出てしまいます。
何か設定を間違っているのでしょうか。DxLibの公式ページの設定方法を見てVisualStudio2010expressを設定したのですが。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: 漢字のバイト数について

#2

投稿記事 by softya(ソフト屋) » 12年前

その環境で全角文字のバイト数が一定しないのは考えられないかと思います。
※ 自分で特殊な文字コードを使っていれば別です。

> 上記のサイトに載っているコードを入力してもdisp[80]をdisp[82]にしないとエラーが出てしまいます。
コピペしてもエラーが出ますでしょうか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

教えてほしいです

Re: 漢字のバイト数について

#3

投稿記事 by 教えてほしいです » 12年前

コピペを試してみましたがだめでした。ちゃんと設定できていれば全角文字は2バイトに統一されるらしいですね。
もう一度設定を見直してみます。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: 漢字のバイト数について

#4

投稿記事 by softya(ソフト屋) » 12年前

文字コードがutf-8とかになっていればオーバーしているというエラーが出るかと思いますが、こちらでもutf-8で、そもそもコンパイルできるかを試してみます。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: 漢字のバイト数について

#5

投稿記事 by softya(ソフト屋) » 12年前

ソースファイルの文字コードがutf-8の場合はコンパイルが通りません。

行番号が違いますが部分的にコピペしたためです。

コード:

u8.cpp(6) : error C2001: 定数が 2 行目に続いています。
u8.cpp(7) : error C2001: 定数が 2 行目に続いています。
u8.cpp(8) : error C2001: 定数が 2 行目に続いています。
u8.cpp(9) : error C2001: 定数が 2 行目に続いています。
u8.cpp(10) : error C2001: 定数が 2 行目に続いています。
u8.cpp(11) : error C2117: 'ch' : 指定された配列には、初期化子が多すぎます。
        u8.cpp(5) : 'ch' の宣言を確認してください。
u8.cpp(11) : error C2078: 初期化子の数が多すぎます。
環境設定の標準のマルチバイト文字(SHIFT-jis)あるいはUNICODE(UTF-16)であればコンパイルは通ります。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

教えてほしいです

Re: 漢字のバイト数について

#6

投稿記事 by 教えてほしいです » 12年前

そこまでして確認してくれた事に感謝します。
しかし文字セットもマルチバイト文字セットに設定していました。
↓このような文章が出ます。82ではなく91の間違いでした。すみません。あとビルドをしたら成功することはできました。
Error:型"const char[91]"の値を使用して型"char[80]"のエンティティを初期化することはできません

ビルド成功してもこのままだと多分全角文字が2バイト以上になったままだと思うのですがどうなんでしょうか。
勝手に失敗と思い込んでいるだけでしっかりできてはいるのですか?

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: 漢字のバイト数について

#7

投稿記事 by softya(ソフト屋) » 12年前

>ビルド成功してもこのままだと多分全角文字が2バイト以上になったままだと思うのですがどうなんでしょうか。

日本語環境ならたぶんありえない事態だと思います。
VisualStudio2010express自体が変なのか、プロジェクトが間違っているかなどしか考えられないですね。
その他に詳しい情報は出せますでしょうか? sp1の適用とか、環境設定時にアレンジを加えていないかどうかとか。

【補足】
文字コードを確認できるテキストエディタでソースファイルを開いてみると適用されている文字コードが分かるかと思います。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

教えてほしいです

Re: 漢字のバイト数について

#8

投稿記事 by 教えてほしいです » 12年前

ごめんなさい。最近プログラミングを始めたばかりの初心者なので詳しい事はよくわかりません。
なので特別に設定を自分なりにアレンジしたりとかは全くやっていないつもりです。

しかし試しにサイトのコードをコピペしてみたらちゃんと1文字ずつ表示されました。
赤い線が出ただけで実行不可能と思い込んでいてごめんなさい。
何故Errorと出るのかはわからないままですがとりあえず処理を成功させることができたので解決したとさせてもらいます。
手間をかけて考えてくれてありがとうございました。

アバター
みけCAT
記事: 6734
登録日時: 15年前
住所: 千葉県
連絡を取る:

Re: 漢字のバイト数について

#9

投稿記事 by みけCAT » 12年前

データ変換ツール(BASE64, URLエンコード(URLデコード), HEX(16進ダンプ), MD5, SHA-1変換フォーム)
ここで最初の「プログラムを習得するには、実際に自分で書いてみることが大事。」という文字列をUTF-8のHEXに変換し、さらに
文字数カウンタ
でそのHEX文字列の文字数を数えたところ、180文字でした。
すなわち、元の文字列が90バイトであったということであり、const char[91]というエラーメッセージと整合します。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

教えてほしいです

Re: 漢字のバイト数について

#10

投稿記事 by 教えてほしいです » 12年前

つまり僕は通常と違った文字コードを使用しているということでしょうか。
プロパティページの文字セットをマルチバイト文字セットを使用するに設定すれば文字コードはDxLibの公式ページで説明されている推奨設定になると思っているのですが間違っているのでしょうか。そこの設定はちゃんとしているつもりです。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: 漢字のバイト数について

#11

投稿記事 by softya(ソフト屋) » 12年前

とりあえず、VisualStudio2010expressはパッチ(sp1)が出ているので必ず更新して下さい。
「マイクロソフト公式ダウンロード センターから Microsoft Visual Studio 2010 Service Pack 1 (インストーラー) をダウンロード」
http://www.microsoft.com/ja-jp/download ... x?id=23691
もしかしたら既に適用済みの状態かもしれません。 

すごく珍しい質問なので不思議な状態です。
VisualStudio2010expressを何処で入手したのか?とかお聞きしたい所です。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: 漢字のバイト数について

#12

投稿記事 by softya(ソフト屋) » 12年前

調べてみましたが、ソースコードがもしBOM付きUTF-8で書かれていてもコンパイル時に設定によってマルチバイト文字(SHIFT-jis)あるいはUNICODE(UTF-16)に変換されます。
なので、さっきエラーになったUTF-8のソースコードをBOM付きUTF-8の文字コードにしてみたところ、ちゃんとコンパイルが通りました。
と言うことでコピペしたソースコードでエラーが出ると言うことは、VisualStudio2010expressのインストール状態に問題が有る事になるかと思います。確定ではありませんが。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

教えてほしいです

Re: 漢字のバイト数について

#13

投稿記事 by 教えてほしいです » 12年前

なるほど。そこから間違っているのですか。
visual studioのダウンロードは↓ここからしました。
http://www.visualstudio.com/downloads/d ... 10-express
基本的にhttp://homepage2.nifty.com/natupaji/DxLib/use/dxuse_vc2010express.htmlこのサイトを見ながらダウンロードしたり設定したりをしています。

今URLを貼ってもらったsp1をインストールしています。
これで試してみます。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: 漢字のバイト数について

#14

投稿記事 by softya(ソフト屋) » 12年前

それだと、大丈夫そうですね。sp1も適用されている可能性が高いです。
初めて聞く症状なので、原因を掴みかねております。
VC++2010を再インストールしてもらう必要があるかもしれません。
あるいは、2012を併用してもらうかですね。

ちょっと、これから出かけるのでしばらく返答できませんので、よろしくお願いします。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

教えてほしいです

Re: 漢字のバイト数について

#15

投稿記事 by 教えてほしいです » 12年前

sp1をインストールしてもvisualStudioを再ダウンロードしてもだめでした・・・。
意味のわからない問題なようで、ここまで付き合ってもらったのに解決できず申し訳ないです。
とりあえずの所自分のやりたかった1文字ずつ表示することは問題なくできそうなのでこのままやってみようと思います。

閉鎖

“C言語何でも質問掲示板” へ戻る