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


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

【UTF8】文字コード変換【SJIS】



1 名前:デフォルトの名無しさん [03/09/10 16:04]
文字コード変換について語りましょう♪

136 名前:デフォルトの名無しさん mailto:sage [03/12/19 20:13]
Asciiコードは無くなるかなあ?

137 名前:デフォルトの名無しさん mailto:sage [03/12/19 20:23]
>>136
欧州市場はやっぱり無視できないから、新規の実装では使われなくなると思う。

138 名前:デフォルトの名無しさん mailto:sage [03/12/19 21:05]
UTF-8という名のASCII

139 名前:デフォルトの名無しさん mailto:sage [03/12/20 00:09]
UTF-8 って合成を考えると、一文字が最大 12 オクテットになるの??

140 名前:デフォルトの名無しさん mailto:sage [03/12/20 05:14]
>>139 21

141 名前:デフォルトの名無しさん mailto:sage [03/12/20 21:50]
どういう計算をして12オクテットになったのか謎ですが
3文字以上の合成だってあります。

142 名前:デフォルトの名無しさん mailto:sage [03/12/22 17:19]
合成で気になったんだが、合成の組み合わせと数に制限はあるのか?

例えば、U+306C U+0308 とか、U+0276 U+0328 U+0336 U+030F U+0360 とかは
Unicode文字として規格上正しいもんなのか……?
# 直感的には、明らかに正しくないことはわかってるのだが。

143 名前:デフォルトの名無しさん mailto:sage [03/12/22 20:18]
>>142
JIS X 0221の規格票をざっと眺めた感じでは、制限無しの模様。

144 名前:デフォルトの名無しさん mailto:sage [03/12/22 22:38]
>>142
残念ながらダイアクリティカルマークの
スタック(積み重ね)という概念は実在する
dl2.yukoncollege.yk.ca/ynlc/ynlcfonts/stacking/stacking.html



145 名前:デフォルトの名無しさん mailto:sage [03/12/24 13:26]
>>144
そこのページ雪だるまがいぱーいあって季節的にGood!


146 名前:デフォルトの名無しさん mailto:sage [03/12/25 01:44]
>好むと好まざるとに関らず、UTF-8 以外は使われなくなってくから
ISO C++ではワイドキャラクタはサポートされてますが、
マルチバイトがしっかり動く環境ではありません。
UCS-4マンセー。UCS-4でいいじゃん。

147 名前:デフォルトの名無しさん mailto:sage [03/12/25 01:58]
だったらこの文字ユニファイして領域節約してくれよ
U・C・S!! U・C・S!!

148 名前:デフォルトの名無しさん mailto:sage [03/12/25 18:01]
>>146
とりあえず、意味不明

149 名前:デフォルトの名無しさん mailto:sage [03/12/25 18:55]
正直utf-16でいい

150 名前:デフォルトの名無しさん mailto:sage [03/12/25 20:03]
正直utf-16のよさがわからない

151 名前:デフォルトの名無しさん mailto:sage [03/12/25 22:56]
WinXP用ならUTF-16もいいが
他の環境を考えると

152 名前:デフォルトの名無しさん mailto:sage [03/12/26 00:58]
UCS4だよ。一文字32ビット固定でいいやんけ。

153 名前:デフォルトの名無しさん mailto:sage [03/12/26 12:55]
合成があるってば

154 名前:デフォルトの名無しさん mailto:sage [03/12/26 14:13]
漢字圏の人間はついついUCS-4で全部解決と
思ってしまうんだよなあ。



155 名前:デフォルトの名無しさん mailto:sage [03/12/26 15:06]
その典型が昔のTRONですね
www.horagai.com/www/den/kanken.htm#04
最近のバージョンでは解決してるの?

156 名前:デフォルトの名無しさん [04/01/06 02:05]
うーん、実態はそんなに単純じゃないんだけどなあ。
TRONの関係者の中にも多言語処理の複雑さを理解している
人たちはちゃんといたよ。昔のweblogをみると多言語の問題と
取り組んで悪戦苦闘している様子がうかがえた。
合成の問題のことは頻繁に話題になっていたよ。

一応TRONでは80年代ごろから多言語処理には
4層構造(言語層、文字属、スクリプト、フォント)で対応する
ということになっていたんだけど、悲しいかな人手不足で
全然研究、ましてや実装は進まなかったんだよ。

今超漢字の販売元は組み込み向けの製品に注力していて、
超漢字にはあまり時間をかけていない様子。改善されているのも
相変わらず漢字処理が中心だよ。明るいニュースはごく最近
SUNがJavaのTRONコードへの対応を約束したことぐらいかな。
まだまだ先の道のりはながいよ。

157 名前:デフォルトの名無しさん mailto:sage [04/01/06 20:27]
> TRONの関係者の中にも多言語処理の複雑さを理解している
> 人たちはちゃんといたよ。
こんなのとか?
www.sumire.sakura.ne.jp/~oguma/tron/btm1999z.html#19991203

漢字がどうしても中心になるのは分からなくもないけどね
使いもしない文字のサポートが強化されたって一般受けしないばかりか
「シリア語ブラクラ」なんて汚名まで被る始末だし

158 名前:デフォルトの名無しさん [04/01/08 04:12]
思ったんだけど、
わざわざ全ての文字を1つの文字コードに詰め込まなくても、
JIS コードみたいに文字コードの切り替えを行うマークを導入すれば
かなりすっきりするんじゃない?

159 名前:デフォルトの名無しさん mailto:sage [04/01/08 04:22]
その切り替えタグに当たるコードは
どうすれば必要十分で、どういうルールで割り当てていく?

160 名前:デフォルトの名無しさん mailto:sage [04/01/08 04:30]
仮に一文字2バイトで固定するなら、
文字として使える領域と
切り替えタグにしか使えない領域に分割すれば
いいんじゃない?

161 名前:あぼーん mailto:あぼーん [あぼーん]
あぼーん

162 名前:デフォルトの名無しさん mailto:sage [04/01/08 04:44]
>>158
エスケープ・シーケンス unix で検索しる。

163 名前:デフォルトの名無しさん mailto:sage [04/01/08 05:02]
>>162
Compound Text ってやつ?
なるほど、既にその手のものはあるんですな。

これで問題になることって何があるのかな?

164 名前:デフォルトの名無しさん mailto:sage [04/01/08 11:50]
>>163
まともな処理をするのがめんどうくさい。



165 名前:デフォルトの名無しさん mailto:sage [04/01/08 11:58]
そもそも、プログラミングを容易にするために(=国際化の容易さに直結)、
シフトを追放しランダムアクセス性を付与することが、
Unicodeの重要目標だったわけで。

166 名前:デフォルトの名無しさん mailto:sage [04/01/08 18:45]
ttp://www.d2.dion.ne.jp/~kuropoo/kanban/shimbun/iwateken.jpg
↑この看板のコウの字がJIS X0208その他の文字集合に見あたらないのですが、
「工」に包摂されているんでしょうか、それとも探し方が悪いのでしょうか……?

167 名前:デフォルトの名無しさん mailto:sage [04/01/11 05:54]
>>166

MacOSX 10.3のヒラギノProに異字体として入ってるから(Stdの方には入ってないし、他のUnicodeフォントにも存在してない)文字集合としてはAdobe-ほげほげ-1.5とか以上でないと
入ってなさそうな感じですね。

印刷物に使うのはかまわないけど、インターネットとかには使えないよという警告がでますな。

168 名前:デフォルトの名無しさん mailto:sage [04/01/11 14:54]
ほうちゃんと警告が出るのか。
つーかちゃんと異体字指定の方法を標準化して
インターネットでも使えるようにしてほしいんだが

169 名前:デフォルトの名無しさん mailto:sage [04/01/12 00:05]
>>168

その辺はまだこれからの課題なんじゃないかな?
AdobeとAppleだけだもんな。今んとこ。
XにContributeされてるAdobeのフォントに日本語のが入ってくれば状況は一気に変わるのかも
知れないけど。
WinはOTFのヒラギノ購入&インストールで対応できるのかな?
Win持ってないんで判らんのでWinの方でヒラギノ入れてるような奇特な人は試してください。
あ、でもInDesignでドキュメントが完全にコンパチブルだとか売りにしてるようだから、ちゃんと
使えるのだろうな、きっと。



170 名前:デフォルトの名無しさん [04/01/19 08:20]
UTF-8 から JIS X 0208 への変換テーブルってどっかない?

171 名前:デフォルトの名無しさん mailto:sage [04/01/19 08:28]
>>170
Perlかなんかで作れ。

172 名前:デフォルトの名無しさん mailto:sage [04/01/19 08:57]
>>170
ftp://unicode.org/Public/ のどっか。

173 名前:170 mailto:sage [04/01/19 09:24]
UTF-8 って UNICODE を千切って可変長にねじ込んでるだけだったんだね。

ash.jp/ash/src/codetbl/jis0208.txt
UNICODE <-> JIS X 0208 の変換テーブルは見つかったから、これを使ってやってみるよ。
>171 >172 ありがとう

174 名前:デフォルトの名無しさん mailto:sage [04/01/19 14:44]
合成なんて、あきらめちゃっていいんじゃないの? 韓国も逃げちゃったし。
既存のコード体系でもしばしば合成を仕様に含めてるけど、まともに利用されてないしさ。



175 名前:デフォルトの名無しさん mailto:sage [04/01/19 15:25]
漢字なんて、あきらめちゃっていいんじゃないの?
既存のコード体系でもしばしば10万字もの漢字を仕様に含めてるけど(ry

というのに賛成なら別に反対しないけど。

古ハングルは合成で表すことになってるし
実際にそれを実装したフォントも存在する
デヴァーナーガリーやアラビア語のスクリプトは
重ね打ちで処理できない合成が必須

176 名前:174 mailto:sage [04/01/19 15:31]
>>175
> デヴァーナーガリーやアラビア語のスクリプトは
> 重ね打ちで処理できない合成が必須

あぁ、そうなのか。そりゃ俺が浅はかだった。

177 名前:デフォルトの名無しさん [04/01/29 03:16]
DB(ORACLE) + JRUN(JAVA + JSP)で
日本語と韓国語を同じページ(一枚のJSP)に混在させて表示させたいのですが
文字コードの設定はどのようにしたらよろしいのでしょうか。
できればDBの同じカラムに日本語と韓国語を突っ込んで
DBはORACLE9iだとUTF-16でしたがUTF-8にかえてJSP側でEUC-Krにしては
日本語がばけるしshift-Jisに設定したら韓国語が化ける。


178 名前:デフォルトの名無しさん [04/01/29 08:33]
JSP側でUNICODE…

179 名前:デフォルトの名無しさん mailto:sage [04/01/29 12:40]
JSP側で日本語と韓国語を同時に使える文字コードを選ぶのは
ものすごく当然だと思うが何に困ってるわけ?
つーか最後の3行日本語になってない

180 名前:デフォルトの名無しさん mailto:sage [04/01/29 12:51]
> つーか最後の3行日本語になってない
韓国語を直訳でもしたんじゃないか?

181 名前:デフォルトの名無しさん [04/01/29 18:53]
VB.NETを使ってるんですが、
日本語文字の自動判別が出来るライブラリってありませんか?

もしくはShiftJISとeucJPを見分ける賢いやり方誰か教えて〜

182 名前:デフォルトの名無しさん mailto:sage [04/01/29 18:56]
Shift_JISとeuc_jpは完全には見分けられないなあ。

183 名前:デフォルトの名無しさん mailto:sage [04/01/29 20:42]
A0 以外の Shift-JIS の半角カナが偶数個あるものは
EUC-JP と区別がつきまそん。

184 名前:181 [04/01/29 21:01]
ありがとうございます。
半角カナが奇数個なら判別可能という事なんでしょうか?
詳しい解説キボン



185 名前:デフォルトの名無しさん mailto:sage [04/01/29 21:05]
例えば MSB の立っているバイトが奇数個だけ連続している(前後はMSBがゼロ)
場合には EUC-JP ではなさそうだな、ということはいえると思う。


186 名前:デフォルトの名無しさん mailto:sage [04/01/29 21:15]
A1〜DF が2つあるやつは、
Shift-JIS の半角カナ2文字と、
EUC-JP の2バイト文字1文字と、
両方の可能性がある。
でも、奇数個なら Shift-JIS にしかなりえない。

他にも E0〜FC で始まり、A1〜FC で終わる文字も
Shift-JIS か EUC-JP か区別できなかったりする。

187 名前:デフォルトの名無しさん mailto:sage [04/01/29 21:41]
>>185
EUC-JPは補助漢字も考慮に入れる必要があるので、奇数個続く可能性はある。

188 名前:デフォルトの名無しさん mailto:sage [04/01/29 21:55]
文字コードだけでは区別しにくい場合でも
日本語の文章の場合、「ひらがな」が多く含まれる事が判定の一助になる場合がある。
例えばSJISだと0x81-0x83(だったか忘れたけど)が多いとか。

189 名前:デフォルトの名無しさん mailto:sage [04/01/29 22:51]
ヒューリスティックな方法だけど、いくつかのプログラム
(例えばnkfとfile(file2)とiconv)にそれぞれ判定してもらって、
多数決をとるっていうのはどーだろ?

190 名前:デフォルトの名無しさん mailto:sage [04/01/29 23:38]
UHCもGBKもEUCの上位互換になるような拡張だから
判定ミスで文字化けに悩まされてるのは日本くらいだよなあ

191 名前:デフォルトの名無しさん mailto:sage [04/01/30 13:26]
半角カナ1文字だと分かってればstrlen()一発で判別できるんだがな。
…何の役にもたたん話だが。

192 名前:デフォルトの名無しさん [04/01/30 18:09]
ファイル入出力をユニコードに対応させたいのですが
_wfopen()使うとWindows95シリーズを切っちゃいますよねぇ。
いっそ切っちゃおうか…、悩ましい。

193 名前:デフォルトの名無しさん [04/02/03 14:28]
Windowsでは、UNICODEとSJISが使われてますね。
UNICODEが多国語Winでぶつからないのは分かりますが、
SJISは多国語Winで別の国のコードとぶつかっちゃうんでしょうか?

194 名前:デフォルトの名無しさん mailto:sage [04/02/03 15:27]
>>193
ぶつからないよ。非ユニコードのマルチバイト系のAPIを使うときは
暗に陽にキャラクターセットが指定されるから、ぶつかりようが無い。




195 名前:193 mailto:sage [04/02/03 16:01]
>>194
そこが凄く知りたいところです。
もっと詳しく教えて下さい。

多国語対応してますが、
Delphi/標準VCLだとASCIIしか受け入れてくれないんですが、
キャラクターセットはどこで指定されるんでしょう。
DBの中身はUTF8で画面入出力時にUTF8ToAnsi/AnsiToUtf8してますが、
画面の入出力で文字化けしたら嫌だな、と思って。

196 名前:デフォルトの名無しさん mailto:sage [04/02/03 17:42]
Windows で ANSI コードページと言った場合、おそらくは GetACP で得られる
コードページ (日本語ロケールなら CP932 のシフトJIS)への変換だと思うのですが、
これはタダの ShiftJIS ですから、JIS にある文字以外は表現できません。
こんなので答えになってるんだろうか・・・

この辺見てみては?
ttp://www.microsoft.com/globaldev/handson/dev/muiapp.mspx

197 名前:デフォルトの名無しさん [04/02/04 00:49]
javaではUCS-4はサポートされていないのでしょうか?
以下のソースでUnsupportedEncodingExceptionが出ました。

FileOutputStream fo = new FileOutputStream(args[0]);
String str = "A";
fo.write(str.getBytes("ISO-10646-UCS-4"));


198 名前:デフォルトの名無しさん mailto:sage [04/02/04 09:57]
java 1.4 は Unicode 3.0 だからなぁ・・・
BMP にない文字は扱えないぽ。

199 名前:デフォルトの名無しさん [04/02/04 21:11]
質問です。
fopenでファイルを開くときWindowsの場合、テキスト形式で開いてたら
0x1AをEOFと判断して、バイナリだと0x1AをEOFと判断しないと聞きました。
それでUnixの場合はバイナリでもテキストでも一緒とも聞いたんですが、それではUnix系はどうやってファイルの終端を確認しているんですか?
Unixのファイル終端の識別子はなんなんですか?

(なんか僕が勘違いなどしてるところがあったらズバット指摘してくれてけっこうです)


200 名前:デフォルトの名無しさん mailto:sage [04/02/04 21:14]
>>199
> (なんか僕が勘違いなどしてるところがあったらズバット指摘してくれてけっこうです)
その質問はスレ違い。

201 名前:199 mailto:sage [04/02/04 21:27]
え、文字コードだからここじゃダメですか?

202 名前:デフォルトの名無しさん mailto:sage [04/02/04 22:11]
C言語の実装の詳細の話だな。

203 名前:デフォルトの名無しさん mailto:sage [04/02/04 22:14]
殆どの近代的なファイルシステムでは、「ファイルの長さ」というものがきちんと管理されているので、
適当なコードを使って終端を示す必要はありません。

一部の処理系の一部の関数において 0x1A をファイル終端としていることがあるのは、ファイル長が
128バイト単位でしか管理されていなかった CP/M という OS との互換性のためです。

204 名前:デフォルトの名無しさん mailto:sage [04/02/04 23:14]
>>203
ありがとうございます。



205 名前:デフォルトの名無しさん mailto:sage [04/02/05 00:33]
xmodemを思い出すな・・・

206 名前:デフォルトの名無しさん mailto:sage [04/02/05 12:03]
UTFとかUNICODEとか言われてもわっかんねーよ
大体おれソフト開発の際そんなこと気にしたことないしな(汗
やっぱりWeb開発者じゃないと気にしないのかな?

207 名前:デフォルトの名無しさん mailto:sage [04/02/05 12:08]
まぁアプリのジャンルや開発環境によって違うだろうね。
一生気にせずに済むのなら、それはそれで幸せだとは思う。

208 名前:デフォルトの名無しさん mailto:sage [04/02/05 12:09]
.NETとかJava開発者なら知らぬ間に使ってますよ

209 名前:デフォルトの名無しさん mailto:sage [04/02/06 10:24]
BCCで可能な限りwin32apiだけを使ってSJISをUTF8へ変換する関数がほしい…
ただしMultiByteToWideCharで直接UTF8へ変換するのはWin95では×らしいので…

210 名前:デフォルトの名無しさん mailto:sage [04/02/06 10:27]
まずUTF-16(95ならUCS-2か)に変換してからRFC3629を見てがんがる
機械的な計算だけでできるから大して難しくないよ

211 名前:デフォルトの名無しさん mailto:sage [04/02/06 10:36]
ちなみにWindows 2000でもMultiByteToWideCharでUTF-8→UTF-16は
セキュリティの問題があるので勧めない。
XPではセキュリティの問題を防ぐためにnon-shortest-formの文字を
削除するようになったとMSDNに書いてるが、削除だと別の問題が
発生するのでMB_ERR_INVALID_CHARSフラグが必要。

212 名前:デフォルトの名無しさん mailto:sage [04/02/07 01:39]
お忙しいところ失礼します。
やり方が分からないので立ち寄らせていただきました。
某板での記事からなのですが、
あるゲームのツールがヨーロッパ(たぶんITALY)で作られて、
日本語がもともと入っているデータがあって、
文字化けして表示されているんですが、
ゲーム中ではちゃんと表示されるんです。
でもそのEditorだとやはり文字化けしてしまうんです。
そこで他の方の質問からの解答で、

文字コードをS-JISからUTF-8へ変換。

とお答えになっていたのですが、
どのようにやればよいかわかりませんか?
本当にやりたいんで御願いします。

ちなみにCとか全く分かりません。
何かソフトありませんか?
OSはXPです。


213 名前:デフォルトの名無しさん mailto:sage [04/02/07 01:41]
メモ帳は UTF-8 で保存可能だ。

214 名前:デフォルトの名無しさん mailto:sage [04/02/07 01:45]
>>213
さっそくの回答ありがとうございます。
コードはどーやって変えるんでしょうか?



215 名前:デフォルトの名無しさん mailto:sage [04/02/07 01:50]
>>212
ここはそんなレベルの低い質問をするスレッドではない。

Windows XPなら、メモ帳がUTF-8に対応しているので
1, Shift JISで書かれたテキストファイルをメモ帳で開く
2, 「名前を付けて保存」のダイアログで、「文字コード」に「UTF-8」を指定

216 名前:デフォルトの名無しさん mailto:sage [04/02/07 01:51]
>>214
pc2.2ch.net/pcqa/

217 名前:デフォルトの名無しさん mailto:sage [04/02/07 01:57]
>>214>>215
本当にありがとうございます。
後一個だけおねがいです。
Shift JISで書くのもメモ帳ですか?
それとも何かありますか?

218 名前:デフォルトの名無しさん mailto:sage [04/02/07 02:01]
メモ帳はデフォルトで ShiftJIS だ。

219 名前:デフォルトの名無しさん mailto:sage [04/02/07 02:03]
よごしてすんませんでした。
本当助かりました、ありがとう!

220 名前:長いと言われたので分割 [04/02/07 13:13]
遅レスだけど
もし参考になれば
>>181
自分のHPからの抜粋今のところうまくは行ってるけど・・・(C#で作ってます)
最近文字コードの勉強しだしたんで間違えてたらスマソ
あとわかりづらいとおもうけどスマソ

■1 ISO-2022-JPの判別
各ESC(0x1B〜)が出た場合はISO-2022-JP(確定)

■2 UTF-8の判別
0xC0<->0xFDが出た場合はUTF-8の強い可能性
第2バイト以降が全て0x80<->0xBF内であればUTF-8の強い可能性、そうでない場合は他コード
第1バイトで指定された長さ以下の場合は他コード

■3 EUC半角の判定
第1バイトが0x8Eで第2バイトが0xA1<->0xDFな場合はEUC半角カナの可能性
ただし既に他の文字コードの強い可能性ありと判断されてない場合に限る
第2バイトがEUC半角カナ範囲外で0x80<->0xA0であるならばSJIS(確定)
以上に当てはまらない場合は不明コード

221 名前:長いと言われたので分割2 [04/02/07 13:14]

■4 EUC補助漢字の判定
第1バイトが0x8Fで第2・3バイトが0xA1<->0xFEな場合はEUC補助漢字の強い可能性
ただし既に他の文字コードの強い可能性ありと判断されてない場合に限る
第2・3バイトどちらかが0xFD・0xFEであるならばEUC補助漢字(確定)
第2・3バイトがEUC補助漢字範囲外で0x80<->0xA0であるならばSJIS(確定)
以上に当てはまらない場合は不明コード

■5 SJISの判定
0x80<->0xA0であるならばSJIS

■6 SJIS半角カナの判定
0xA1<->0xDFが出た場合はSJIS半角カナ・EUC全角かな・カナの強い可能性
ただし既に他の文字コードの強い可能性と判断されてない場合に限る
第1バイトが0xA4か0xA5で第2バイトが[かな]0xA1<->0xF3[カナ]0xA1<->0xF6であるならば
EUC全角ひらがな・カタカナの弱い可能性
第2バイトをチェックして0xE0<->0xFEであるならばEUCの強い可能性で0xFD・0xFEの場合はEUC(確定)
第2バイトが存在しない場合はSJISの強い可能性
以上に当てはまらない場合はSJIS半角カナの強い可能性

■7 EUCの判定
0xA1<->0xFEの場合はEUCの強い可能性で0xFD・0xFEの場合はEUC(確定)
当てはまらない場合は不明コード


222 名前:長いと言われたので分割3 [04/02/07 13:15]
[1]→ ISO-2022-JP確定

[2]→UTF-8強可能性→UTF-8強可能性→次ループ(ポインタ=+UTF8サイズ)
|         +→他コードの強可能性→[3]へ

[3]→EUC半角カナ強可能性→EUC半角カナ強可能性→次ループ(ポインタ=+1)
|             +→EUC半角カナ確定
|             +→SJIS確定
|             +→不明コード→次ループ(ポインタ=+1)

[4]→EUC補助漢字強可能性→EUC補助漢字強可能性→次ループ(ポインタ=+1)
|             +→EUC補助漢字確定
|             +→SJIS確定
|             +→不明コード→次ループ(ポインタ=+1)

[5]→SJIS確定

[6]→SJIS半角カナ強可能性→SJIS半角カナ強可能性→次ループ(ポインタ=+1)
|             +→EUC全角かなカナ弱可能性→次ループ(ポインタ=+2)
|             +→EUC強可能性→次ループ(ポインタ=+1)
|             +→EUC確定

[7]→EUC強可能性→次ループ(ポインタ=+1)
+→EUC確定

不明コード→次ループ(ポインタ=+1)

223 名前:デフォルトの名無しさん mailto:sage [04/02/07 13:31]
BOMは無視?

224 名前:デフォルトの名無しさん mailto:sage [04/02/07 13:37]
utf-8 → Shift_JIS (Shift_JISに無い文字はTeXのutf package用に\UTF{xxxx})
がほしい



225 名前:220 mailto:sage就活( ゚Д゚)タイヘンダー [04/02/07 14:13]
>>223
BOMと言うものを知らなかったので・・・
今検索してみてわかりました

UTF-8に関しては
変換するときは消したほうがよさそうですが
判別の時は特に考えなくてもいいかと
判断された文字コードをスコア化して1番多いものをその文字コードと判断してるんですが
それに対して重みをつける(通常+1を+2ぐらい)でいいかなと

そのうちUTF-16とかにも対応したいので非常に勉強になりました
ありがとうございます

226 名前:220 mailto:sage [04/02/07 15:18]
とおもったらUTF-8・UTF-8Nと区別するんですね_| ̄|○

.NETのEncodingクラスには無さそうだけどためしに変換してみたら
ゴミデータが付いてきたから標準でUTF-8Nなのかなぁ

227 名前:デフォルトの名無しさん mailto:sage [04/02/07 15:43]
>>220
> 0xC0<->0xFDが出た場合はUTF-8の強い可能性
0xC0, 0xC1 が出た場合はUTF-8ではない(確定)
Unicode(U+10FFFFまで)はサポートするけどISO10646の
UCS-4(U+7FFFFFFF)はサポートしないなら0xF5-FDも除外できる
RFC2279/3629参照

228 名前:220 mailto:sage [04/02/07 16:35]
>>227
RFC読みました
C0、C1がセキュリティ上禁止されていることがわかりましたので
早速条件に入れたいとおもいます

UCS-4に関してはとりあえずサポートして置きたいので入れて起きます

ありがとうございます
奥が深い・・・

229 名前:デフォルトの名無しさん [04/02/07 22:00]
>> 220
どこかのHPにまとまっている?


230 名前:220 mailto:sage [04/02/07 22:25]
>>229
はいまとまってるとおもいますが2chで晒すほど度胸無いので・・・
最近ページ追加したばっかりでgooglebotは数回きてるんですが反映はまだ見たいです

231 名前:デフォルトの名無しさん [04/02/08 03:44]
予言:

  1 0 年 後 に は 、 U T F - 6 4 が 標 準 に な り ま す 。


_| ̄|○

232 名前:デフォルトの名無しさん mailto:sage [04/02/10 10:27]
>>211
どの場合も、事前に必要バッファ長を取得してから、
バッファ長指定して呼び出せば大丈夫じゃない?

233 名前:デフォルトの名無しさん mailto:sage [04/02/10 17:20]
>>232
セキュリティの問題というのは>>227-228でもちょっと触れてるけど
たとえばディレクトリトラバーサル対策で「2E 2E」という文字列を
フィルタリングしても、「C0 AE 2E」とか書くと貫通してしまうという問題。
altba.com/bakera/hatomaru.aspx/glossary/0055006e00690063006f006400650020005700650062002000540072006100760065007200730061006c
あるいは「<」をnon-shortest formで送ることでXSSを発動させるとか。
www.cert.org/tech_tips/malicious_code_mitigation.html#3
対策としてXPではC0 AEのようなシーケンスを削除するようになった
わけだが、今度は「2E C0 AE 2E」とか書くと貫通する。
もう少しモノを考えて修正してくれMicrosoftと小一時間(ry
ただしMB_ERR_INVALID_CHARSを付けるとエラーになってくれる。

234 名前:デフォルトの名無しさん mailto:sage [04/02/10 17:46]
>>233
おお、なるほど。
勉強になります。

結局のところ、有効な対策の一つとしては、
「API側の対策をあてにせず、UTF-16 or UCS-2に変換した後に危険な文字をチェックしろ」
ってことですかね?



235 名前:デフォルトの名無しさん mailto:sage [04/02/10 18:28]
逆では?
UTF-16 or UCS-2 のままでのチェックだけではなく、
API に渡される実際の引数レベルでもチェックをするって感じ?

236 名前:デフォルトの名無しさん mailto:sage [04/02/11 05:47]
>>235
違う。






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

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

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