[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 02/24 02:15 / Filesize : 263 KB / Number-of Response : 1018
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C言語なら俺に聞け 159



1 名前:デフォルトの名無しさん mailto:sage [2022/08/04(木) 23:32:27.83 ID:yWVViPyIM.net]
!extend:checked:vvvvv:1000:512
(新スレ立ての際上記コマンドを2行書き込んでください)
C言語の話題のみ取り扱います C++の話題はC++スレへ
質問には最低限の情報(ソース/コンパイラ/OS)を付ける
数行で収まらないソースは以下を適当に使ってURLを晒す
https://paiza.io/
https://ideone.com/
codepad.org/

C17
www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/n4713.pdf

C11
www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.pdf

C2x ドラフト
www.open-std.org/jtc1/sc22/wg14/www/docs/n2731.pdf

C99
www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf
kikakurui.com/x3/X3010-2003-01.html

C FAQ 日本語訳
www.kouno.jp/home/c_faq/

JPCERT C コーディングスタンダード
https://www.jpcert.or.jp/sc-rules/

※前スレ
C言語なら俺に聞け 158
https://mevius.5ch.net/test/read.cgi/tech/1640401906/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured

175 名前:デフォルトの名無しさん mailto:sage [2022/09/09(金) 20:26:03.68 ID:wh55t5+tM.net]
文字はutf-8でも一文字が数バイト必要な事があるので、charはもはや要らない子と言える
バイト列を使いたければuint8_tを使って、ちゃんと文字として扱うなら、wchar_tとかchar32_tを使うべきだろうね

176 名前:デフォルトの名無しさん mailto:sage [2022/09/09(金) 20:34:47.77 ID:AfgZ2PrAM.net]
なお中国や日本、韓国などに限る

177 名前:デフォルトの名無しさん mailto:sage [2022/09/09(金) 21:21:58.31 ID:CwUslwUl0.net]
wchar_tこそ要らない子やん
お前一体何バイトなんだよ

178 名前:デフォルトの名無しさん mailto:sage [2022/09/09(金) 23:02:27.43 ID:JkEyHRIQ0.net]
>>169
>char は 8bit とは限らん、
うん、その指摘はされると思ってた。
>charはsigned charやunsigned charとは違う型だよ
なるほど、その認識はなかったは。

179 名前:デフォルトの名無しさん mailto:sage [2022/09/09(金) 23:22:11.84 ID:qKP12tcq0.net]
自分はvb→C言語→機械語だけど
機械語知らないとダメだよなって思ったわ
大体CPUの仕様と合わせるんだよな
8bitも昔のCPUの慣習出しさ
だからプレステのCPU大好きとかライゼンサイコー、いやいややはりインテルだろう
なんて言う自作オタがやり始めるとかなり速いんだよな
自作PCの構造はCPUの中身に似てるから

180 名前:デフォルトの名無しさん mailto:sage [2022/09/10(土) 00:37:03.60 ID:d6i83HiwM.net]
>>174
Windowsだと2byteでLinuxだと4byteだな
しかしバイト数を気にしてはいけない
気にしなければ可搬性のあるコードを書ける

181 名前:148 mailto:sage [2022/09/10(土) 02:16:33.70 ID:bSy2C3T30.net]
文字化けのところは手に負えないですが、おかげさまでbase64エンコーディングプログラムが完成しました。
ここで言われたことは全部含めてみました。
構造体のタグ、enum型、charじゃなくてuint8_t、終端処理など。

https://ideone.com/7wolLZ

コードが汚いなど直すところありましたらどしどしご意見ください。
とりあえず、最初に使ってみる言語はbase64エンコーディングプログラムを組んでみて
なれてみようという方針なので。
次はVBAで組んでみるか、sha256プログラムをC言語で組んでみようか考えてます。

182 名前:デフォルトの名無しさん (ワッチョイ adc2-+Wio) mailto:sage [[ここ壊れてます] .net]
struct tmって、冗長な設計になってるよね
たとえば tm_mon == 1 && tm_mday == 1 なら tm_yday == 0 のはずだけど tm_yday >= 1 にもなれる
こういう矛盾がある場合の扱いって規格票のどっかに書いてあったっけ?

183 名前:デフォルトの名無しさん mailto:sage [2022/09/11(日) 14:26:36.00 ID:Y1sYJFelM.net]
たとえば規格書のmktimeにはカレンダー時間で表現できなければ-1を返すって書いてあるかそう実装するのが正しそうだけども



184 名前:はちみつ餃子 mailto:sage [2022/09/11(日) 14:31:15.93 ID:D/VbhUuk0.net]
>>180
tm_yday は無視するとも書いてあるぞ。

185 名前:デフォルトの名無しさん mailto:sage [2022/09/11(日) 14:32:58.51 ID:LP1WepGR0.net]
レス㌧x

カレンダー時間で表現できるか否かということは
tm_year, tm_mon, tm_mdayのことで、tm_ydayには該当しない議論だよね
逆にtm_ydayに合わせるように補正はしないとなると
ここに優先順位があるのかな

186 名前:デフォルトの名無しさん mailto:sage [2022/09/11(日) 14:34:54.92 ID:LP1WepGR0.net]
すまん、ちょっと外出する
夜には戻る

187 名前:デフォルトの名無しさん mailto:sage [2022/09/11(日) 14:37:22.22 ID:Y1sYJFelM.net]
あらほんとだ。戻り値の説明しか見てなかったわ

188 名前:デフォルトの名無しさん mailto:sage [2022/09/11(日) 15:00:19.15 ID:hGIJSvzu0.net]
>>182
そもそもtm_wdayとtm_ydayは更新されるって書いてあるし
関係ないけど
・tm_mday: 1 から 31 の範囲の日付。
・tm_mon: 1 月からの月数 (0 から 11 の範囲)。
なのは毎回もやるわ、なぜ両方0スタートじゃないのか...

189 名前:はちみつ餃子 mailto:sage [2022/09/11(日) 15:04:45.97 ID:D/VbhUuk0.net]
>>185
月は (英語では) 月の名前に置き換える (配列から名前を引く) という都合から自然にそうなったという説は聞いたことがあるな。
日は番号をそのまま表示するもんだから最初から番号通りのほうが都合がいいし。

190 名前:デフォルトの名無しさん mailto:sage [2022/09/15(木) 17:53:22.84 ID:gNCVLuZy0.net]
ローカル変数の宣言で、宣言しようとしているポインタの初期化子に、同じ文で
宣言された変数を参照するのは規格上OKですか?

/* test1.c */
1 | int main(int argc, char **argv)
2 | {
3 | char s[100] = {'A'}, *p = s;
4 | int i = 10, *a[10] = {&i};
5 | return 0;
6 | }

最新の gcc で試したところ、-std=c89 -pedantic の場合に下記の警告が出ます。
特に3行目が OK で、4行目が駄目な理由がよく分からないです。
どちらもスタック上の相対位置はコンパイル時に決まると思うのですが。
Cの文法について詳しい方、教えてください。

gcc --version
gcc (GCC) 12.2.1 20220819 (Red Hat 12.2.1-1)

gcc -O0 -std=c89 -pedantic -Wall -Wextra -Wno-unused-parameter -Wno-unused-variable -c test1.c
test1.c: In function ‘main’:
test1.c:4:27: warning: initializer element is not computable at load time [-Wpedantic]
4 | int i = 10, *a[10] = {&i};
|            ^

gcc -O0 -std=c99 -pedantic -Wall -Wextra -Wno-unused-parameter -Wno-unused-variable -c test1.c
警告なし

191 名前:デフォルトの名無しさん mailto:sage [2022/09/15(木) 20:06:58.44 ID:C6syfEgyd.net]
C99より前は集成体(配列、構造体)に対する初期化子定数式(アドレス定数式)でスタックは認められていないっぽい
3行目の初期化対象は配列じゃないでしょ

192 名前:デフォルトの名無しさん mailto:sage [2022/09/16(金) 06:50:50.62 ID:jyhWPRLZ0.net]
int main(void)
{
int a = a;
}
これもOKなんだが

193 名前:デフォルトの名無しさん (スッププ Sd0a-39XR) mailto:sage [[ここ壊れてます] .net]
>>189
スタック上のアドレスを使ってポインタを初期化できるかって話だろ



194 名前:デフォルトの名無しさん mailto:sage [2022/09/16(金) 19:31:34.25 ID:alBs0lLWd.net]
>>187
{&i}だけだったら初期化は簡単だけど
その書き方だと本来{&i,&グローバル変数,NULL...}などと書けるのでそうなると特殊な初期化が必要になるんじゃないかな

195 名前:デフォルトの名無しさん mailto:sage [2022/09/16(金) 19:59:25.14 ID:u2ZYVkG20.net]
一見
スタックに実体をもつ配列の先頭はセーフで (3行目)
スタックに実体をもつ変数のポインタはアウトというふうに見えるけど (4行目)
{ } の中か否かの差もあるんやね

196 名前:デフォルトの名無しさん mailto:sage [2022/09/17(土) 00:57:57.08 ID:GfZyyjDu0.net]
>>190
そんなん言い出したら自動変数をポインタで指せるのかさえ怪しくなってくるな

197 名前:デフォルトの名無しさん mailto:sage [2022/09/17(土) 12:49:57.03 ID:fh691Hyrd.net]
スコープ内でアドレスが参照されたならば
自動変数はレジスタ変数にはならなくなる
「自動」の意味

198 名前:デフォルトの名無しさん mailto:sage [2022/09/17(土) 19:52:14.52 ID:fgoWI+8da.net]
win10(以下win)
strawberry perl入れた時一緒にいれたgcc

wsl
ubuntu22.04 gcc

どっかでみた配列関係のサンプルで
(間違えるとnull見つかるまで一生探し続けるよ的なコード)
で試したら

winで値がおかしい
linuxで正しい

とりあえずwin側でgdbで見ると
winで格納アドレスが逆順になってました
例えばコード上で

array1うんたら
array2かんたら

とあって
array2がアドレス100番台
array がアドレス200番台
みたいになってました
この挙動は環境依存なのかバグなのか知りたいです

まぁ結局両方windowsなんですが

199 名前:デフォルトの名無しさん mailto:sage [2022/09/17(土) 19:56:51.12 ID:ZRyqS0700.net]
ネットワークオーダーとかエンディアンとかが絡んでる可能性はあるけど、コードを見ないとなんとも

200 名前:デフォルトの名無しさん mailto:sage [2022/09/17(土) 20:03:08.34 ID:PxOaZq6Kd.net]
>>195
抽象的すぎて全然わからんw

201 名前:デフォルトの名無しさん mailto:sage [2022/09/17(土) 20:04:45.56 ID:fgoWI+8da.net]
コードは
https://www.delftstack.com/ja/howto/c/length-of-char-array-in-c/
手入力でミスってたらごめんなさい

202 名前:デフォルトの名無しさん mailto:sage [2022/09/17(土) 20:08:18.29 ID:fgoWI+8da.net]
因みにこっちのwin環境だと
上サイトで24byteになるはずの所が10byteになります

203 名前:デフォルトの名無しさん mailto:sage [2022/09/17(土) 20:22:45.77 ID:ZRyqS0700.net]
strlenのことか?
文字列と違ってchar配列の末尾には自動的にnull挿入されたりしないから、nullまで数え上げるstrlenが何を返すかわからないし、環境によってはメモリアクセス違反で落ちるかも



204 名前:デフォルトの名無しさん mailto:sage [2022/09/17(土) 20:26:08.77 ID:fgoWI+8da.net]
いや多分違います

アドレスが逆

多分ここが重要なんですがその原因が
と言うところです

205 名前:デフォルトの名無しさん mailto:sage [2022/09/17(土) 20:44:25.86 ID:LY5v/fLv0.net]
環境依存です
ゼロで終端されていないものにstrlenを呼んではいけません
そのコードが誤り

206 名前:デフォルトの名無しさん mailto:sage [2022/09/17(土) 20:51:16.94 ID:I+4Vfslra.net]
うーん
そう言うことじゃなくて・・・
なんでメモリアドレスの格納が逆になるの?
と言うところです
cの規格的な話じゃなくてですね・・・

207 名前:デフォルトの名無しさん mailto:sage [2022/09/17(土) 20:58:26.77 ID:LY5v/fLv0.net]
そのページを作った人の環境(コンパイラとバージョン)ではarr,arr2の順で
あなたの環境ではarr2,arrの順なんでしょ
たまたまそうなっただけです

208 名前:デフォルトの名無しさん mailto:sage [2022/09/17(土) 21:10:35.35 ID:I+4Vfslra.net]
文系脳で行き着く先っていつもそうなんですよね
でも残念ながら「それ」がないんですよ
この世界

たまたま
なんかわかんないけど
偶然
楽しけりゃいいじゃん

なんで生きてるのお前?

馬鹿は嫌い 回線で首でも吊ってろカスが

ジパング馬鹿しかいないからもう寝る

209 名前:デフォルトの名無しさん mailto:sage [2022/09/17(土) 21:15:00.75 ID:W7nqA9Zmd.net]
オタクくん怒って寝ちゃったw

210 名前:デフォルトの名無しさん [2022/09/17(土) 21:44:56.47 ID:njcq0eeLa.net]
スタックはアドレス高位から低位の方向に積まれることが多いから、arr2のアドレスがarrのそれより小さくなるとかですかね

211 名前:デフォルトの名無しさん mailto:sage [2022/09/17(土) 21:46:48.25 ID:aOSn8JHC0.net]
そういう人を落とし込める記述はやめよう

212 名前:デフォルトの名無しさん mailto:sage [2022/09/17(土) 23:27:39.41 ID:eA0eWCp60.net]
スタックの方向などは環境依存だろ

環境依存は他にも、little/big endian とか、
char が、0〜255, -128〜127 のどちらなのかとか

文字コードが、BOM 無しUTF-8 以外とか

213 名前:デフォルトの名無しさん mailto:sage [2022/09/18(日) 01:46:10.06 ID:3xNGEVex0.net]
gdbの使い方、ここで質問してもいいですか?



214 名前:デフォルトの名無しさん mailto:sage [2022/09/18(日) 02:19:18.49 ID:OVhdQ/fk0.net]
>>210
大きく言語自体から脱線するようだとあまりよくないかなと思うけど、
ささいなことなら多少は良かろうと思うし、程度次第じゃね。

215 名前:デフォルトの名無しさん mailto:sage [2022/09/18(日) 02:40:43.36 ID:3nFqfKLUH.net]
>>209
UTF-8 に BOM は本質的に不要です
なぜならば BOM = Byte Order Mark ですが、UTF にバイトオーダーなど存在しません
BOM なし、と断ること自体、頭が悪い証拠を如実に表出していると愚考させていただきます

馬鹿は死ね

216 名前:デフォルトの名無しさん mailto:sage [2022/09/18(日) 02:43:34.57 ID:Z+lYrLLqa.net]
はじめてのC言語完全入門!【Hello World〜ポインタまで徹底解説】
91,121 回視聴
freeCodeチャンネル

217 名前:デフォルトの名無しさん mailto:sage [2022/09/18(日) 03:28:52.56 ID:OVhdQ/fk0.net]
>>212
BOM はエンコード方式の識別に使われる場合もあると公式 (unicode consortium) の資料に書かれている。
BOM が BOM という名前である以上は本来の用途からの転用ではあるが、
バイトオーダーだけを根拠にして不要と断じるのはエンジニアリング的に良い姿勢ではないな。

218 名前:デフォルトの名無しさん mailto:sage [2022/09/18(日) 04:26:41.31 ID:GkyrVNWr0.net]
>>212
いい大人がバカとか4ねとか言ってるの見ると悲しくなってくるわ
人付き合いをろくにしてこなかった精神的にガキのおっさん痛すぎる

219 名前:デフォルトの名無しさん mailto:sage [2022/09/18(日) 05:15:19.35 ID:fdsnSmbGd.net]
>>205
めちゃくちゃだよアンタw
文系ポエムは他でやんなさい

220 名前:デフォルトの名無しさん mailto:sage [2022/09/18(日) 05:26:48.38 ID:fdsnSmbGd.net]
>>205
よく見るとそのページ内容がむちゃくちゃだなw
データが格納される順番はコンパイラ依存なのでそんなサンプルコードは作ってはいけない

「まず、arr のオブジェクトサイズは 24 バイトと表示されますが、」じゃねえよw
「内部の詳細を無視してしまうと恐ろしいエラーが発生する可能性があります。」もう起こっているw

以上

221 名前:デフォルトの名無しさん mailto:sage [2022/09/18(日) 10:38:22.56 ID:kY5VkQwD0.net]
>>198
そもそも上のコード
size = 24 bytes
size = 17 bytes
この2つはどこから出てきたんだ?
printCharArray のあとの printf("size = %lu bytes \n", ... ); はひとつしかないのに

>>195
array1とarray2がそれぞれスタックに積まれるなら array2、array1の順は正しいし
array1とarray2がリテラルとしてコード上に存在するならarray1、array2の順は正しい
ただの最適化の問題じゃないのか

222 名前:デフォルトの名無しさん [2022/09/18(日) 13:53:49.44 ID:KpBP36NGa.net]
文系は全称と単称の区別が出来ない
大抵の馬鹿はこれで判別出来る

223 名前:デフォルトの名無しさん mailto:sage [2022/09/18(日) 14:04:23.72 ID:CIgAfYZs0.net]
そういう表現も、大体根拠が希薄
血液型占いと同程度



224 名前:デフォルトの名無しさん mailto:sage [2022/09/18(日) 14:12:29.01 ID:Rev08jtKa.net]
>>203
規格では一切順序の保証はないので
同じ結果が欲しければそのぺーじと同じ環境を用意してください

225 名前:デフォルトの名無しさん mailto:sage [2022/09/18(日) 18:22:49.00 ID:JcdidFMxd.net]
機械翻訳まるだしだし
Pythonのおまけで載ってるだけだから
そんなページあてにするなとしか

226 名前:デフォルトの名無しさん [2022/09/18(日) 18:23:22.20 ID:rN2/Bhfe0.net]
>>212
Windowsのメモ帳でUTF-8で保存するとBOMが先頭に入った状態になるよね。
そういう変な出力をするソフトがあるせいでUTF-8なのにBOMの有無を意識しなきゃいけなくなるんだよ。

227 名前:デフォルトの名無しさん mailto:sage [2022/09/18(日) 19:08:21.37 ID:OVhdQ/fk0.net]
>>223
UTF-8 ではない形で保存されている可能性はいつでもあるわけだが……。

228 名前:デフォルトの名無しさん mailto:sage [2022/09/18(日) 19:35:00.75 ID:CIgAfYZs0.net]
メモ帳で保存する場合、選択はこの中から

https://i.imgur.com/eJf3vLE.png

229 名前:デフォルトの名無しさん mailto:sage [2022/09/18(日) 20:14:09.21 ID:tcByEu8Hd.net]
wcharはutf8圧に負けて廃れるんかね
Cのようなロートル言語使ってると固定幅(但し幅は決まっていない)エンコの有り難みをひしひしと感じる

230 名前:デフォルトの名無しさん mailto:sage [2022/09/18(日) 21:11:58.46 ID:/3elu/X80.net]
ストレージはutf-8
メモリーはwchar_t
じゃね?

231 名前:デフォルトの名無しさん [2022/09/18(日) 22:03:00.04 ID:rN2/Bhfe0.net]
>>225
それでBOM付き選んじゃうやつが居るんだろうな。選択肢無くして欲しいものだ。

232 名前:デフォルトの名無しさん [2022/09/18(日) 22:05:23.89 ID:rN2/Bhfe0.net]
>>226
入出力でJavaみたいに変換すれば良いじゃん。
iconvライブラリとか使って。

233 名前:デフォルトの名無しさん mailto:sage [2022/09/18(日) 22:23:37.69 ID:zhWgY60z0.net]
>>229
ふぇふふ…



234 名前:デフォルトの名無しさん (ワッチョイ 9f2c-ret5) mailto:sage [[ここ壊れてます] .net]
メモ帳は、BOM 付きUTF-8 になるから、ダメ

BOM無しUTF-8は、VSCode, サクラエディタなどを使う。
TeraPad は、新し目の文字に対応していないので、ダメ

235 名前:デフォルトの名無しさん (ワッチョイ 9f63-E+l9) mailto:sage [[ここ壊れてます] .net]
メモ帳、デフォルトでBOM無しで保存する
BOM付けるにはセレクトで一番下を選ぶ操作が必要

236 名前:デフォルトの名無しさん (テテンテンテン MM3f-2Jl6) mailto:sage [[ここ壊れてます] .net]
UnicodeのBOMはUTF-{8, 16, 32}で並び順が違うから判別に使える
逆に無いと推測に頼るしかない
メモ帳はSJISのテキストを開かれることもあるから、BOM無しUTF-8の場合は推測している
BOMが有れば確実に判別出来る
なのでBOM付きUTF-8は悪くない

237 名前:デフォルトの名無しさん (ワッチョイ 5701-dv3E) [[ここ壊れてます] .net]
WindowsではBOM付きのほうが便利だけどね。

238 名前:デフォルトの名無しさん [2022/09/18(日) 23:12:31.63 ID:a87PubfG0.net]
gccもBOMに対応したことですし。

239 名前:デフォルトの名無しさん mailto:sage [2022/09/18(日) 23:23:26.35 ID:CUVLEdWC0.net]
UTF-8にBOMが要らないと主張しているのは今の現実について言っているわけじゃなくて
「UTF-8しか存在しない美しい世界」を目指している活動家だからな。
説明したところで話が?み合わない。

240 名前:212 mailto:sage [2022/09/19(月) 00:00:08.46 ID:hV59E8S+H.net]
>>236
よくわかっていますね、実はそうなんですよね

241 名前:デフォルトの名無しさん mailto:sage [2022/09/19(月) 00:15:30.26 ID:YVA4ZVOh0.net]
自覚したなら今度からはバイトオーダーにかこつけたアホな主張はやめとけよ。

242 名前:ハノン mailto:sage [2022/09/19(月) 00:18:28.74 ID:hV59E8S+H.net]
美しい世界(爆笑)のために、今後も活動を続けていきます!

243 名前:デフォルトの名無しさん [2022/09/19(月) 02:37:34.04 ID:Z9ZARiSG0.net]
ユニコードの上位セットであるGB18030もあるんだけど。



244 名前:デフォルトの名無しさん [2022/09/19(月) 11:10:12.09 ID:NE4NRLG3F.net]
>>236
そんなあなたに Nim がおすすめ

245 名前:デフォルトの名無しさん [2022/09/19(月) 11:11:36.70 ID:NE4NRLG3F.net]
>>233
ASCII (8bit以内) しかないテキストに BOM 付いてたらさすがにうざいと思う

246 名前:ハノン mailto:sage [2022/09/19(月) 11:21:09.68 ID:PpMrjNAJH.net]
>>242
ですよね!
コードは普通コメントも英語で書くし、なんで BOM がつかなきゃならないのか意味不明なんですよ、ましてや UTF-8 に BOM つけてもいい規約なんて後付けなんでしょう?
美しい世界(爆笑)のために今日もがんばります!

247 名前:デフォルトの名無しさん mailto:sage [2022/09/19(月) 11:40:57.93 ID:YVA4ZVOh0.net]
>>241
まさに今、話が噛み合わないことを痛感した。

248 名前:デフォルトの名無しさん mailto:sage [2022/09/19(月) 11:41:54.30 ID:zeLiCYh20.net]
なくても使えるなら、ない方が良い

249 名前:はちみつ餃子 mailto:sage [2022/09/19(月) 11:43:27.96 ID:npVSxydm0.net]
どれでもいいけど規格で決めないという対処には愚痴を言いたくもなる。

250 名前:デフォルトの名無しさん mailto:sage [2022/09/19(月) 11:55:32.42 ID:M3xsgC0JM.net]
>>242
ウザいの定義を言え
普通にテキストエディタで編集してるだけなら気付きもしないだろう

251 名前:デフォルトの名無しさん mailto:sage [2022/09/19(月) 12:00:13.75 ID:zeLiCYh20.net]
気付かなかったあなたはたぶん幸せ者です

252 名前:デフォルトの名無しさん mailto:sage [2022/09/19(月) 12:13:35.24 ID:b1CdxAyP0.net]
10年前ならともかく今時BOMの有無で困ることなんてほぼなくね?

253 名前:デフォルトの名無しさん [2022/09/19(月) 12:30:39.37 ID:/08McGz80.net]
BOMなしUTF-8のデータを読ませるとエラーになるプログラムを作ったやつがいる。
こういうやつをどうするべきか?



254 名前:デフォルトの名無しさん mailto:sage [2022/09/19(月) 12:33:02.11 ID:zeLiCYh20.net]
市中引き回しのうえ、磔獄門で

255 名前:デフォルトの名無しさん mailto:sage [2022/09/19(月) 13:00:37.09 ID:YVA4ZVOh0.net]
仕様で読めることになっているのにエラーになるならバグだがそうでないなら読ませる方が悪い。
日本語Windows向けアプリの大半はそうだな。

256 名前:デフォルトの名無しさん [2022/09/19(月) 13:09:05.53 ID:/08McGz80.net]
仕様ではUTF-8と書いてあるだけ。ならばBOMの有無に関係なく読めるようにするべき。

257 名前:デフォルトの名無しさん mailto:sage [2022/09/19(月) 13:13:10.64 ID:zeLiCYh20.net]
仕様ではUTF-8と書いてあるなら、あったら読み飛ばせば良いだけだな

258 名前:デフォルトの名無しさん [2022/09/19(月) 13:29:40.55 ID:/08McGz80.net]
にも関わらずBOMがないとわざわざエラーを出して終わる

259 名前:デフォルトの名無しさん mailto:sage [2022/09/19(月) 13:40:15.70 ID:b1CdxAyP0.net]
単なるバグだろ、とっとと直させろよ

260 名前:デフォルトの名無しさん mailto:sage [2022/09/19(月) 14:03:09.97 ID:Y3ojWtlT0.net]
> こういうやつ

BOMなしUTF-8のデータそのものを修正したいのか
BOMなしUTF-8のデータを読めるようにプログラムを修正したいのか
プログラムを作ったやつに復讐したいのか

どれだ

261 名前:ハノン mailto:sage [2022/09/19(月) 15:32:18.43 ID:PpMrjNAJH.net]
BOM はもともと UTF-16 のためのものでしょう?
それを、UTF-8 に対しても無条件に BOM をつけてしまうウンコエディターを量産している奴等に問題があるん

262 名前:ナすよ…

また、正直にいって、規格で決めればいいとかいう思考停止にも我慢ならないんですよ
美しい世界(爆笑)のために今日もがんばります!
[]
[ここ壊れてます]

263 名前:デフォルトの名無しさん [2022/09/19(月) 15:34:28.84 ID:Z9ZARiSG0.net]
HTMLもBOM推奨してなかったっけ。



264 名前:デフォルトの名無しさん mailto:sage [2022/09/19(月) 15:56:49.87 ID:zeLiCYh20.net]
HTMLの場合、「BOM」付けると、PHP で謎の空白ができてしまう など動作や表示に不具合が出る可能性があるそうです。

265 名前:デフォルトの名無しさん [2022/09/19(月) 16:04:04.51 ID:Z9ZARiSG0.net]
それは、BOM付けるのがPHPの仕事だからじゃないの?

266 名前:デフォルトの名無しさん [2022/09/19(月) 16:20:33.07 ID:x76VqF340.net]
PHPは中途半端に歴史が古いから、Unicodeといえば、UTF-16なんだよな。

でもそのおかげでWindowsとの相性は悪くない。

267 名前:デフォルトの名無しさん mailto:sage [2022/09/19(月) 16:20:51.69 ID:zeLiCYh20.net]
そもそも UTF-8 には、エンディアンの違いがなく、BOM(バイトオーダーマーク)を付ける必要がないんだそうだ

268 名前:デフォルトの名無しさん mailto:sage [2022/09/19(月) 16:22:57.02 ID:zeLiCYh20.net]
HTMLの場合はHEADに使っている文字コード情報が入っているのでそれを見れば良い事になる

269 名前:デフォルトの名無しさん [2022/09/19(月) 16:25:44.76 ID:Z9ZARiSG0.net]
>>264
たしか規格でBOMを優先することになってなかったっけ?

270 名前:デフォルトの名無しさん mailto:sage [2022/09/19(月) 16:33:42.03 ID:zeLiCYh20.net]
文字列としてバイトオーダーが実際に問われるのは、
UTF-16やUTF-32のケースだけです
その場合は必要ですね

271 名前:デフォルトの名無しさん [2022/09/19(月) 16:34:41.81 ID:Z9ZARiSG0.net]
確認したところ、なってたわ。
HTMLパーサー書いたことがあるから、おぼろげに覚えてた。

272 名前:デフォルトの名無しさん [2022/09/19(月) 16:46:36.41 ID:Z9ZARiSG0.net]
・BOMがある場合、BOMに従う。
・ない場合、500ms、あるいは1024バイト読み込むまで待機し、エンコーディング走査アルゴリズムを呼び出す。

エンコーディング走査アルゴリズム内で、ヘッダー内の情報が読み取られる場合もある。
(このアルゴリズムでも、他に優先される情報がある。)

やはり、HTMLにおいては、BOMをつけるべきだな。
読み込みが速くなるし、文字コードの違いを利用した攻撃を避けることが出来るし。

273 名前:デフォルトの名無しさん mailto:sage [2022/09/19(月) 16:47:54.37 ID:zeLiCYh20.net]
HTMLの場合は、HEADに使用するcharsetが記述されてますから心配ありません



274 名前:デフォルトの名無しさん [2022/09/19(月) 16:48:57.21 ID:Z9ZARiSG0.net]
昔の外国映画で「ふにゃちん野郎が!」という悪口があったよね。
今後は「BOM無し野郎が!」と言うことを提案いたします。

275 名前:デフォルトの名無しさん mailto:sage [2022/09/19(月) 16:49:03.30 ID:zeLiCYh20.net]
それにUTF-8にはバイトオーダーがありません






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<263KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef