X



文字コードの種類は何故複数あるのでしょうか?
0227デフォルトの名無しさん
垢版 |
2010/07/03(土) 13:17:19
この話は続ける必要はない。落ちたスレで既に話は終わっていたのだから。

999 名前:デフォルトの名無しさん [sage]: 2010/06/26(土) 22:19:28
>>972

>UTF-8にすると何もかも上手くいくよ派は、何を言いたいのかよくわからん

そんな奴いたか? wchar_tにすれば何もかもうまくいくよ派は居たけど。

---

UTF-8にすると何もかも上手くいくよ派がいないのなら、
>>212が争点にしてたことは、元々誰も否定してなかったことだし、
>>219が争点にしてたことは、元々誰も言っていなかったこと。
wchar_tにすることが全てを解決する方法じゃないのは自明。

結論は既に出ていた。
0229デフォルトの名無しさん
垢版 |
2010/07/03(土) 13:30:08
じゃあここは「文字コード総合スレ」がなぜ立たないのか、立てた場合のテンプレの話のスレにする?
0233デフォルトの名無しさん
垢版 |
2010/07/03(土) 15:13:49
>>231
> >>228
> それよりも俺はwchar_tにすれば何もかもうまくいくよ派がいたのかどうかが気になるが。
>
WindowsかJavaしか知らなくて、Unixのロケールを知らなければそういう発想になるかも。
0236デフォルトの名無しさん
垢版 |
2010/07/03(土) 15:26:22
>>234
> >>233
> 意味が分からん。2chに書いてあったか書いてなかったかと、Unixのロケールがどう関係するんだ?
fopenのwchar_tは規格化されていない、から泥仕合が始まったのだが。
0237デフォルトの名無しさん
垢版 |
2010/07/03(土) 15:28:13

知らないことは誰だってあるけど、いいやんとか言って違いも調べず思考停止するやつは向上心もう少し持とうぜ
0238デフォルトの名無しさん
垢版 |
2010/07/03(土) 15:43:18
>>236
・fopenの話が出たことと、wchar_tにすれば何もかもうまくいくという人がいたことは関係がない
・fopenが出てくる前から、どうせ泥試合だった
・どっちにせよ、fopenでそのままutf8渡して(文字化けすらしないという意味で)うまくいくのはロケールもutf8のときのみ
と認識しているが。
0239デフォルトの名無しさん
垢版 |
2010/07/03(土) 16:01:26
> ・どっちにせよ、fopenでそのままutf8渡して(文字化けすらしないという意味で)うまくいくのはロケールもutf8のときのみ
> と認識しているが。

ロケール間違ったまま使っていることなんてしょっちゅうあるが?
日本語化しないままOS使えるだろ。
文字がちゃんと表示されないだけで
0240デフォルトの名無しさん
垢版 |
2010/07/03(土) 17:02:38
Linuxのext2,ext3でSJIS,EUC-JP,UTF-8のファイル名混在は時々ある。
LinuxでもCD-ROM,vfat,ntfs,smbfsをマウントできて、その時に文字コードを指定しないと痛い目にあう。
0241デフォルトの名無しさん
垢版 |
2010/07/03(土) 17:47:51
>>239
日本語使えるロケールでも日本語がちゃんと表示されないんだったら、それは正常に動作してるとは言わない。
たとえ内部的にはちゃんと保持できていたとしても、関係ない。

>>240
それぞれのパーティションごとに文字コードが違うのは指定すればいいけど、
同一パーティションに複数の文字コードが混在してるのはやめてほしいが……
0244デフォルトの名無しさん
垢版 |
2010/07/03(土) 19:41:28
つか、例えば仕様書に「ロケールはja_JP.eucjp」って明記してあっても、
utf8で書いてもなんにも問題はないからutf8で書いて、
utf8なら問題なくfopen使えるからutf8でfopen使って、
結果、表示が文字化けしていても、utf8なら問題なく読めるから問題ないって言いきるつもりなのか?

内部的にはutf8使ってもいいけど、必要に応じて変換しないとダメなんじゃないの。
0245デフォルトの名無しさん
垢版 |
2010/07/03(土) 19:44:47
>>241
表示が化けるのはあくまで端末側の問題。
fopen自体はロケール関係なく正常に動作している。
まったく同じコードでね。
UTF8がASCII互換だからちゃんと動く。
0247デフォルトの名無しさん
垢版 |
2010/07/03(土) 20:34:28
>>245
ロケールがEUC-JPなのにファイルをUTF8で書き込むのは正常動作って言えるのか?
日本語ロケールでUIが全部韓国語になるのと同じくらい馬鹿げてると思うぞ。
0248デフォルトの名無しさん
垢版 |
2010/07/03(土) 20:38:42
>>238

>・どっちにせよ、fopenでそのままutf8渡して(文字化けすらしないという意味で)うまくいくのはロケールもutf8のときのみ
>と認識しているが。

それはそうだけど、fopenの機能としてはちゃんと動作するよね。
wchar_tの渡した場合、fopenが正しく機能しない・・・というか渡せない つまりfopenでは動作しない

どちらもうまく動いてないといえるけど、その動かない箇所のレイヤーが違うんだよね。
それを同じ土俵で較べ合ってもしょうがないと思うんだが。
0249デフォルトの名無しさん
垢版 |
2010/07/03(土) 20:52:48
>>248
1. 意図した通りの結果にならないのなら、どこで失敗しても五十歩百歩
2. wchar_tでもcharでも意図した通りの結果にしたければ、一旦ロケールに合わせて変換しないといけないという点で同じ
3. なんでそんなにwchar_tに拘ってるの?
   >>227
   > wchar_tにすることが全てを解決する方法じゃないのは自明。
   >>231
   > それよりも俺はwchar_tにすれば何もかもうまくいくよ派がいたのかどうかが気になるが。
0250デフォルトの名無しさん
垢版 |
2010/07/03(土) 20:59:31
> 2. wchar_tでもcharでも意図した通りの結果にしたければ、一旦ロケールに合わせて変換しないといけないという点で同じ

意図したとおりの結果にするには表示するときにデータを整えれば良いだけの話。
それはfopenには関係ない話。
0251デフォルトの名無しさん
垢版 |
2010/07/03(土) 21:01:10
>>247
> ロケールがEUC-JPなのにファイルをUTF8で書き込むのは正常動作って言えるのか?
普通にロケールがEUC-JPだけど、
UTF-8のファイルを読み書きしたり
データベースがUTF-8だったりするけど?

何を言いたいのかさっぱりわからん。
0257デフォルトの名無しさん
垢版 |
2010/07/03(土) 21:47:40
wchar_tが2バイト4バイト、エンディアンの違いを考えると、
gtkの内部utf-8はマルチプラットフォームって意味では合理的だと思うが。
0258デフォルトの名無しさん
垢版 |
2010/07/03(土) 22:45:00
>>249

>1. 意図した通りの結果にならないのなら、どこで失敗しても五十歩百歩

結果で見ればそうだけど、ここはプログラム板。
システムで採用されているロケールの文字を使う限り文字化けはしないわけでしょ。
ASCIIでもShift_JISでもUTF-8でも。
それらに対してprintfはそのまんま使える汎用性がある。

wchar_tの場合は、そこまで汎用性が持たせられない。というかそこまで汎用的に
使える標準関数が整備されていない。

その違いによる(プラットフォーム間の移植などで)発生するコストをどう捉えるかの
問題じゃないの?
0259デフォルトの名無しさん
垢版 |
2010/07/03(土) 23:17:42
ばかっ。
wchar_tとか不用意に持ち出すと今度はCSI vs UCS Normalizationで不毛な戦火の拡大が……
0260デフォルトの名無しさん
垢版 |
2010/07/03(土) 23:33:30
>>250
eucjpロケールの環境で、ファイル名も全部eucjpで保存されてるのに、どっかの誰かがお構いなしにutf8で書いて文字化けしたら、
その人のためにわざわざlsをeucjpとutf8混在しててもちゃんと使えるように書き換えろって言うの?

> 結果で見ればそうだけど、ここはプログラム板。
関係がない。どこの板でも、表示上文字化けするかしないかは重要な基準。
0261247
垢版 |
2010/07/03(土) 23:36:12
utf8の利点言いたい人がfopenなんて持ち出したのが間違いとしか思えない。
むしろ、俺ならそこに触れないわ。

>>251
ごめんよー、ファイル名の間違いだわ。
0262デフォルトの名無しさん
垢版 |
2010/07/03(土) 23:37:59
>>260
文字化けするが書けるだろう?

それは違う文字コードでちゃんと書けていることを意味するんだよ。
0263デフォルトの名無しさん
垢版 |
2010/07/03(土) 23:38:59
>>258
>>249の2.には異論ないのかな?
だったら、
fopenがそのまんま使えるには使えるけれども、意図した通りの結果にしたければ、一旦ロケールに合わせて変換しないといけない
が結論なわけだな。
0264デフォルトの名無しさん
垢版 |
2010/07/03(土) 23:41:19
>>262
それでいいんだったら、utf8自体いらない。
UTF16をbase64エンコーディングしたらASCIIだけで事足りるんだから。
0265デフォルトの名無しさん
垢版 |
2010/07/03(土) 23:42:31
意図した通りってなんだよ。

ファイル名が「テスト」だとしてEUC-JPで書き込んだ場合と
UTF-8で書き込んだ場合、文字コードが違うのだから
それをあらわすバイナリ列も違う。

だから違うファイル名として扱うのが意図した動作だが?

逆に言えば、fopenはバイナリ列しか見ておらず
それがEUC-JPかUTF-8なのかは気にしていない。
わざわざ文字コードを変換する機能を入れるのが意図した動作だと?
0267デフォルトの名無しさん
垢版 |
2010/07/03(土) 23:50:03
酷い流れだ。もう結論これでいい?

表示上文字化けしないようにファイル作りたかったら、文字コード変換しろ。
表示上文字化けしてもバイナリ列が保存されていればどうでもいいなら、utf8使っても構わん。
0268デフォルトの名無しさん
垢版 |
2010/07/03(土) 23:52:27
>>266
何のためにじゃなくて、Unixでは'/'と'\0'以外パス名に制限が無いから、
それ以外何を使っても良い、でしょ。
0273デフォルトの名無しさん
垢版 |
2010/07/04(日) 00:17:36
>>270
はい。残念なことになっています。

fopenはワイド文字を扱う場合は、_wfopenを使うようにと
一時期は使えない関数とされ、今は一応使えるようになりましたが、
標準を満たしていない独自の引数をとるようになりました。

もはや互換性の無い別物です。
0274デフォルトの名無しさん
垢版 |
2010/07/04(日) 00:33:55
>>272
うん。表示に拘らないのなら、半角英数だけで事足りる。ドットくらいは使うかもしれんが。
実際、人が読む必要がないキャッシュファイルやら一時ファイルはそういう風な名付け方になってることが多い気がする。
0276デフォルトの名無しさん
垢版 |
2010/07/04(日) 00:36:42
http://www.game-create.com/archives/320
>
> よく使う標準関数の UNICODE 対応表を作ってみました。
>
> Windows では UNICODE 対応時と UNICODE 未対応時で
> 呼び出す関数を振り分ける必要がありますが、 _t で始まる
> 標準関数を使っておくことで、コンパイル時に自動的に関数を振り分けることができます。

あー、これは残念だw
0278デフォルトの名無しさん
垢版 |
2010/07/04(日) 00:52:11
>>275
言葉自体が曖昧。
まず、Windowsは内部ではファイル名をutf-16で管理してる。
そして、fopenは実装依存。とりあえずVC++のfopenで、日本語ロケールでの使用を想定する。
つまりfopenはcp932(sjisのMS拡張と思ってよし)でエンコードされたchar*をとって、内部でutf-16に変換してる。

そういう意味で、全ファイル名がUNICODE文字列であって、fopenではcp932を経由してUNICODE文字列のファイル名を開ける、と言える。

あるいは、cp932入れるべきところに強引にUNICODE文字列をねじこんで、
それをWindowsが内部でcp932のつもりでutf-16に変換したもの、という意味なら。

まず、それがファイル名として妥当なものになるのか(つまり、そんなファイル作れない。ないものは読めない)というのがひとつ。
次に、UNICODE文字列とはutf8か16か32か(あるいは7か...)。
16,32ならNULを含むことになって作れないだろうなぁ。
8なら、sjisのバックスラッシュ問題にコンパイラが対応してるか、ユーザが小細工してるか。
それによって別の文字になるので調整しないといけないが、うまくすれば読める。
0281デフォルトの名無しさん
垢版 |
2010/07/04(日) 01:09:25
WindowsではfopenにASCII非互換のSJISなどを
認めてしまったため、ASCII互換のものならなんでも受け付けられる
なんて変更は出来なかった。

そのためUNICODEに対応するには、fopenではない
別の関数を使うしかない。それが_wfopen(MS独自関数)ただし
これはUNICODE(UTF-16)限定のためWin9xでは動かない。
そのために_tfopenというマクロが作られた。これを使っていると
define定数でfopen、_wfopenどちらを使うか自動的に変更できる。

これは関数だけではなく、文字列も一緒で、L”文字列"なんて書き方をすると
自動的に変換してくれるがなんか_Tマクロとか_TEXTマクロとかいろいろあって
誰か、きれいにまとめて書いてくれ。

めちゃくちゃすぎてわからん。あぁ、fopenだけでUTF-8で
もEUC-JPにもなんにでも対応できるLinux楽だよ。
0283デフォルトの名無しさん
垢版 |
2010/07/04(日) 07:56:21
_Tマクロとか_TEXTマクロとかWindowsのマクロの種類は何故複数あるのでしょうか?
0300デフォルトの名無しさん
垢版 |
2010/07/30(金) 20:17:12
>>299
ここも隔離スレっぽいよ。
0301デフォルトの名無しさん
垢版 |
2010/08/05(木) 08:30:33
コードの種類は何故複数あるのでしょうか?
ストレートとクロスの見分けが付きません。
0305デフォルトの名無しさん
垢版 |
2010/08/10(火) 12:56:48
>>302
イカリソース
0306デフォルトの名無しさん
垢版 |
2010/09/12(日) 08:49:08
>>302
カゴメ
0309デフォルトの名無しさん
垢版 |
2010/09/13(月) 07:34:49
ソースの種類は何故複数あるのでしょうか?
ソースを買ってくるように頼まれてソイソースを買ってきたら怒られました。
0310デフォルトの名無しさん
垢版 |
2010/09/13(月) 16:04:42
そりゃ醤油はソースとは認められないからな。
次はちゃんとソースを買ってくるんだぞ。
0311デフォルトの名無しさん
垢版 |
2010/09/13(月) 16:38:52
>>283 自分用メモ
WindowsSDKレベルではではTCHARとTEXTか__TEXTのみ有効
その他はCランタイムのもので混用すべきではない
0316デフォルトの名無しさん
垢版 |
2010/09/14(火) 07:45:04
それは言語機能でMSは関係ないな
もっともMS以外ではワイド文字がUTF-16とは限らないけど
0317デフォルトの名無しさん
垢版 |
2010/09/25(土) 17:10:40
もっとも、 <windows.h>の中のどこかのヘッダで以下のような旨の記述があり、
「_UNICODEとUNICODEのどちらか一方は定義してあるけど、もう片方は定義されていない」
という状況を排除しているので、_TとTEXTを混在させても問題ない。
#ifdef UNICODE
#ifndef _UNICODE
#define _UNICODE
#endif
#endif

#ifdef _UNICODE
#ifndef UNICODE
#define UNICODE
#endif
#endif
0318デフォルトの名無しさん
垢版 |
2010/10/09(土) 19:23:25
>>302
どろソース
0319デフォルトの名無しさん
垢版 |
2011/01/16(日) 14:27:02
そーすね
0320デフォルトの名無しさん
垢版 |
2011/04/15(金) 13:28:40.29
>>302
オリバー
0325森& ◆vjMeDi2lEM
垢版 |
2011/06/24(金) 00:06:15.57
森鴎外の「鴎」は正しくは「鷗」である。
草なぎ剛
草g剛

北朝鮮に文字コードは割り振られているのか?

マイクロソフトは、南朝鮮の町工場に北の象形文字をOSに実装してくれと
懇願されたが拒否したらしいが。直接北から要求しなかった。
北は南と文字が異なっているのか。

unicodeに北文字あったか?存在するなら規格票、文献を提示してくれ。

0326uy ◆hi.ht/Isu2
垢版 |
2011/06/29(水) 06:19:43.43
>マイクロソフトは、南朝鮮の町工場に北の象形文字をOSに実装してくれと
>懇願されたが拒否したらしいが。直接北から要求しなかった。
>北は南と文字が異なっているのか。


日本語勉強しろよゴミカスが

マジでゴミなんだな
0327デフォルトの名無しさん
垢版 |
2011/10/25(火) 22:25:08.62
      ∩___∩
      | ノ      ヽ
     /  ●   ● |
     |    ( _●_)  ミ
    彡、   丶 ノ  、`
   / __/ ⌒`\/⌒/
   (___)  .  /  ( )
    |   ⌒`\//⌒
    入_ へ  \_ へ  \_
 @三三三三 (____)三(____)三三)
レスを投稿する


ニューススポーツなんでも実況