文字コード総合スレ Part12

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2018/12/17(月) 16:48:24.47ID:Pfqpaohb
プログラマーなら一度は煩わされたことのある文字コードについてのスレ。
UTF-8、Shift_JIS、JIS、EUC、Unicode、UCS、サロゲートペア、コードポイント、文字コード判定、
合成文字、ソート、TRON、外字コード、その他について語り合いましょう。
各言語での文字列の扱いについての質問もOKです。
基本マッターリ、ささ、茶でもどうぞ。

■過去スレ
文字コード総合スレ part1 http://pc11.2ch.net/test/read.cgi/tech/1031028205/
文字コード総合スレ part2 http://pc11.2ch.net/test/read.cgi/tech/1143375639/
文字コード総合スレ part3 http://pc11.2ch.net/test/read.cgi/tech/1180250376/
文字コード総合スレ part4 http://pc11.2ch.net/test/read.cgi/tech/1228052369/
 (スレ再利用)UnicodeとUTF-8の違いは? http://pc12.2ch.net/test/read.cgi/tech/1177930957/
 (隔離スレ)UnicodeとUTF-8の違いは? その2 http://pc12.2ch.net/test/read.cgi/tech/1274937437/
文字コード総合スレ part5 http://pc12.2ch.net/test/read.cgi/tech/1236529563/
文字コード総合スレ part6 http://hibari.2ch.net/test/read.cgi/tech/1278923059/
文字コード総合スレ part7 http://toro.2ch.net/test/read.cgi/tech/1306595564/
文字コード総合スレ part8 http://peace.2ch.net/test/read.cgi/tech/1354248962/
文字コード総合スレ part9 http://peace.2ch.net/test/read.cgi/tech/1401301779/
文字コード総合スレ Part10 http://mevius.2ch.net/test/read.cgi/tech/1444822140/
文字コード総合スレ Part11 http://mevius.5ch.net/test/read.cgi/tech/1516629503/
2020/09/30(水) 11:03:16.10ID:h1wvHACb
>>307
バグじゃなくて仕様だよ。予約されてるから。
2020/09/30(水) 11:04:41.69ID:h1wvHACb
制約事項として明記された不具合は仕様と呼んでいい。
2020/10/02(金) 03:35:07.39ID:rHkefn4v
>>99
それなら普遍的に使えるスタイルとの結合文字にすりゃいい話
だけどそうしないのはそもそもスタイルと文字は分ける設計だから
スタイルはCSSなり他の技術がある
2020/10/02(金) 03:36:07.77ID:rHkefn4v
肌の色とか差別がなかったところに肌の色って概念を導入した結果結局偏りが生まれてるクソ仕様
2020/10/02(金) 03:47:03.40ID:b+gARvx0
>>311
それはもう解決済みの問題です
313デフォルトの名無しさん
垢版 |
2020/10/02(金) 11:31:57.29ID:vWjl5fwE
こんにちは、初めまして。

今、個人的に amazon kindle端末用の電子書籍データを作るにあたって
仕様として JIS X 0213:2004 を保証すると書いてあるのでこの文字コードのユニコードのセットをまとめて
いわゆる JIS X 0213:2004 文字チェッカーのようなものを作っています。
Webページベースでユニコードのテキストを入力して、
使用してる文字が Kindle端末オーケーかどうかをチェックするプログラムです。
JavaScript(u16)用 と PHP(u8)用 で二種類のチェックプログラムを作ってます。

それで資料を集めて検証しているところなのですが、ちょっと判断に迷うコードがあったので、
他に聞ける場所も無いということで、ちょっとここで質問してみることにしました。

以下のコードなのですが、方や u16 で2文字(U+025B U+0300)、方や1文字(U+1F72) になってます。

https://ja.wikipedia.org/wiki/JIS_X_0213非漢字一覧
(A) ɛ̀ 1-11-48 0x866f U+025B U+0300 グレーブアクセント付きEPSILON小文字
(A) ɛ́ 1-11-49 0x8670 U+025B U+0301 アキュートアクセント付きEPSILON小文字

https://www.asahi-net.or.jp/~ax2s-kmtn/ref/unicode/u1f00.html#u1f72
(B) U+1F72 ὲ グレーブアクセント付きEPSILON小文字
(B) U+1F73 έ アキュートアクセント付きEPSILON小文字

この文字だけに限っての判断としますが、
どちらか一方が出た場合にどちらかに変換して正規化するとした場合、
正規化後は (A) と (B) のどちらが良いと思いますか?

気が向いたらレスを付けてくれたら嬉しいです、参考にしますので。

ちなみに、Windows10等でキーボード入力される 全角チルダ(U+FF5E,'~') は
JIS x0213:2004 コード規格の 波線(U+301C,'〜') に正規化することにしています。
(その他、似たような文字はなるべく一種類に正規化出来ればと考えています)
314デフォルトの名無しさん
垢版 |
2020/10/02(金) 11:37:56.63ID:vEIDHK0R
グレープってなんだって思ったらグラーブのことか
2020/10/02(金) 11:59:54.40ID:ooD45Zz3
Ruby に、そのエンコードは無いの?
316デフォルトの名無しさん
垢版 |
2020/10/02(金) 12:00:25.80ID:vWjl5fwE
どうぞ。

https://www.asahi-net.or.jp/~ax2s-kmtn/ref/unicode/u1f00.html#u1f72
1F72 ὲ GREEK SMALL LETTER EPSILON WITH VARIA ≡03B5(ε) 0300(◌̀) グレーブアクセント付きEPSILON小文字 2B50
1F73 έ GREEK SMALL LETTER EPSILON WITH OXIA ≡03AD(έ) アキュートアクセント付きEPSILON小文字

https://ja.wikipedia.org/wiki/JIS_X_0213非漢字一覧
` 1-1-14 0x814d U+0060 アクサングラーブ/グレーブアクセント グレイヴ・アクセント

https://ja.wikipedia.org/wiki/グレイヴ・アクセント
JIS X 0213の名称は、「アクサングラーブ, グレーブアクセント」
The grave accent ( ` ) (/ɡreɪv/ or /ɡrɑːv/)
317デフォルトの名無しさん
垢版 |
2020/10/02(金) 14:38:35.67ID:vWjl5fwE
なんとなく備忘録

https://ja.wikipedia.org/wiki/JIS_X_0213非漢字一覧
\ 1-1-32 (JIS)2140 (SJIS)0x815f U+005c 逆斜線 バックスラッシュ
\ 1-1-79 (JIS)216f (SJIS)0x818f U+00a5 円記号 円記号

日本語環境だとどちらも円マークだけど、JISx0208 , JISx0213 だと U+00a5 に正規化すべきなのか・・・、
一応 JIS x0213:2004 規格だと、U+005c はバックスラッシュで表示されるらしいし?
自分とこで作る電子書籍は問答無用で全角円マークにするから検討すべき問題でもないのだけれど、
とりあえず日本語でしか使わないので U+005c → U+00a5 正規化コードを突っ込んどけばいいか。

というか、いい加減にカオスな状況が終わってると思ってチマチマ始めたというのに、
なんか微妙なところで微妙に決まってないというか、
mb_convert_encoding() で Unicode から JIS コードにしたいのに、
エラーも出さずにシラっと Unicode で返すのは辞めてほしかった・・・、

ちなみにこんなもので悩もうとか思ったのは、
kindle用電子書籍を作るにあたって第3水準や第4水準のつもりで使った漢字を
既存のWebサービスやツール類で 適性かどうかをチェック出来るものが無かったからなんですね。
まぁ、既存のツールがあったとしても他人が作ったそのツールの仕様を理解するのも面倒だって理由もありますが。

ちょっと気づいたんだけど、U+00a5 の方も普通に Windows のファイル名として使えるのね・・・、
見た目で違いを判別できないとか、まじに勘弁してほしい。

あと、他のサイトだけど、しらっと SJIS で6バイトのコードを表示するのも辞めてほしい・・・、
2020/10/02(金) 15:25:55.64ID:rmc8/xO8
日本の PC の内臓フォントは JIS X 0201 だったので、SJIS の 0x5C は円記号ということで運用されていたのだけど
Windows 3.1 で Unicode 対応を入れる時に ASCII 互換じゃないとうまくいかないことに気付いて、
CP932 の 0x5C を「見かけは円記号に見えるけど、実際には逆射線ということにした。円記号に見えるのはフォントせいで心の目で見ると逆射線」ということにした。
そのせいで Windows の一部日本語フォントを使った場合のみ 0x5C と 0xA5 の両方が円記号で表示される。
解決法: (1)別のフォントに変える。(2)Windows を捨てる。
2020/10/02(金) 15:54:09.42ID:rmc8/xO8
Unicode 的にはどっちでも良いのだけど JIS X 0213 的には 1-11-48,49 は 1F72,1F73 との対応を示しているので、そっちにしておくのが無難かな。
一文字にしておけば、結合文字に未対応の環境でも変にならずにすむし。
320デフォルトの名無しさん
垢版 |
2020/10/02(金) 16:07:25.61ID:gdIx8v5/
>>318
消火器と消化器は間違えんなよ。小火器も使う時あるからな。
2020/10/02(金) 17:58:09.59ID:rmc8/xO8
おう逆射線と逆斜線の変換ミスな。気付いてなかったわ。すまん。
2020/10/02(金) 18:49:02.52ID:zXx3uGG2
>>318
Windowsだけでなく、国産Android端末もそういうフォント入れてる。
Android標準のnotoなら正しくバックスラッシュ出るんだけど、SONY端末には入ってないんだな。
323デフォルトの名無しさん
垢版 |
2020/10/02(金) 18:54:47.21ID:vWjl5fwE
>>319
サンクス。
U+1F70 , U+1F71 , U+1F72 , U+1F73 は一文字の方を正規化先にして作ってみることにします。
2020/10/02(金) 20:47:22.49ID:ErcYaiEt
>>318
Shift_JISがJIS X 0201 Romanだから困るからCP932で超解釈したのはC言語の問題じゃなかったっけ?

Shift_JISで厳密に次のコードを解釈すると
#include <stdio.h>

int main(int argc, char argv[])
{
int a = 0x0077ffaa;
printf("%08x %08x\n", a, ~a);
return 0;
}
バックスラッシュ\nとチルダ〜ではなく円記号¥nとオーバーライン ̄だから、改行とビット反転にはならない

正しくはトライグラフを使って
#include <stdio.h>

int main(int argc, char argv[])
{
int a = 0x0077ffaa;
printf("%08x %08x??/n", a, ??-a);
return 0;
}
としないといけない

だけど誰もトライグラフなんて使っていないから、CP932は0x5cはグリフが¥なバックスラッシュという超解釈でごまかした
CP932では0x7eの意味はチルダでグリフも〜だからそっちはそのままでいい

チルダ関係もカオスだよね
『〜』と『〜』別な文字だけど区別できる見た目で表示されているほうがむしろおかしいんだっけ?
2020/10/02(金) 21:00:45.39ID:Va1PciQI
PDF に謎の漢字が含まれるとき
https://gist.github.com/xl1/940d653451fd96a06618a6df08d5df84
2020/10/02(金) 21:17:20.27ID:zXx3uGG2
ピントはずれ。
シフトJISできる前からJIS C 6220のソースをコンパイラに食わせてた。
コンパイラは0x5cにASCIIのバックスラッシュ以外の意味知らないし、そう扱って問題は出ない。

シフトJISとコンパイラで問題がでるのは文字列リテラル中のダメ字。
2020/10/02(金) 21:57:12.83ID:ErcYaiEt
>>326
> コンパイラは0x5cにASCIIのバックスラッシュ以外の意味知らないし、そう扱って問題は出ない。
正しく国際化されているコンパイラでは問題を起こす

実際2000年前後の国際化対応gccでShift_JISで書かれたコードで問題が起きたことがある
(ダメ字を問題なく処理できるのに¥nが改行と解釈されない)

日本語環境ではみんな雑に捉えて¥と\を区別していなかったのは事実だけど、トライグラフが
ANSI Cで導入された以降Shift_JISで書かれたコードは正しく解釈すると規格に反する状態であった

実際にトライグラフをまともに使っていたのはデンマークだっけ?
2020/10/02(金) 22:12:09.12ID:rmc8/xO8
厳密にいうと C言語のソースは基本文字集合と呼ばれる 1バイト文字を含まなければならない。それには \ のみで ¥ は存在していない。
JIS の C言語の規格ではソースに JIS X 0201 を使用する場合は \ と ¥ を置き換えることになっている。
1バイト文字の解釈は必ず基本文字集合と同じでなければならない。
多バイト文字やシフト状態を持つ文字でナル以外の文字に 0x00 のバイトが来るのは禁止。
シフト状態を持つ場合には初期シフト状態に基本文字集合を持たなければならない。
上記を満たせば多バイト文字の解釈は実装依存。
2020/10/02(金) 22:13:24.20ID:ErcYaiEt
>>327
実際にgccのShift_JISとCP932ハマった人の例見つけた
ttps://blogger.tempus.org/2008/03/gcc-shiftjis.html
330デフォルトの名無しさん
垢版 |
2020/10/03(土) 00:32:32.33ID:5QIBKgVv
文字コードを意識せずにプログラミングが出来るようになる革命はまだですか?
2020/10/03(土) 00:59:47.45ID:g9HEPfwG
革命とは過去の遺物を捨て去ることだよ。
2020/10/03(土) 09:47:26.20ID:8tX55Lof
>>328
> JIS の C言語の規格ではソースに JIS X 0201 を使用する場合は \ と ¥ を置き換えることになっている。
ANSI CやISO 9899にそんな規定はない
JISX3010で参考として追記された箇所であってローカル規格

そもそも¥を\の代わりに使っていいなら何のためにトライグラフを国際規格に入れたの?
¥を\と解釈するJISX3010は国際規格ISO 646に反しCP932と同じ超解釈の類

gccの振る舞いが国際規格に準拠する正しい動作
333デフォルトの名無しさん
垢版 |
2020/10/03(土) 10:32:33.14ID:1CYfZXkg
ideone.com とかは
スマホから試すときとPCから試すときで
\と\の扱いが違って動きが可笑しくなることがある
unicode になって区別が明確になったことによる弊害のひとつ
2020/10/03(土) 14:19:07.86ID:asw2Nmie
>>322
だから JIS の C言語の規格で、なおかつ入力に JIS X 0201 を使う時、限定と書いてるじゃん。
コンパイラがロカール規格に対応していたら使って良いんだよ。
gcc がローカル規格に対応する義務はないが、ちなみに gcc には LANG=C-SJIS という設定があってな。
2020/10/03(土) 14:23:10.98ID:asw2Nmie
アンカミス。 322 → 332
336デフォルトの名無しさん
垢版 |
2020/10/03(土) 14:44:31.16ID:y5FkQ2yd
もちつけ
2020/10/05(月) 00:37:11.64ID:aYBNZcXd
>>323
どうなんだろうね。
確かにユニコード的には例えばNFDにしたときのベースの文字が正解かと。
一方 U+025X はIPAのブロックで、要は発音記号... ということは、文脈的に発音記号
として使われているならこっちだったりするのかも?
2020/10/08(木) 10:57:17.71ID:tD965ZiH
Rubyをやってるんだけど、分からないところあるから教えてほしいです…
クラスメソッド、インスタンスメソッド、インスタンス変数あたりの意味がさっぱりで…
339デフォルトの名無しさん
垢版 |
2020/10/08(木) 11:08:48.28ID:Riy1MZEi
説明読んでも意味が判らない間は無理に使う必要は無い
君にはまだ早いってこと
2020/10/08(木) 11:25:58.08ID:e+h9pet/
>>338
Ruby 初心者スレッド Part 66
https://mevius.5ch.net/test/read.cgi/tech/1578068134/
2020/10/08(木) 11:34:16.59ID:SMtYwKCf
個人的に普段は ruby は使わないんだけど、文字コードの実装は perl や python や java に比べると ruby は筋が良いんだよな。(個人の感想です)
2020/10/08(木) 21:30:15.81ID:24ftK7/Z
>>341
python使いの私に文字コード関連でのrubyの利点についてぜひご教示ください。
rubyはさわったこと無いです。
2020/10/09(金) 09:29:33.69ID:81dxs4Bx
ドキュメントを見ると結構マイナー(?)なエンコーディングもあるっぽいね。
ケータイ各社の絵文字入りSJISとかもあるんだ。
https://en.wikibooks.org/wiki/Ruby_Programming/Encoding
2020/10/09(金) 11:37:23.24ID:5kgt8bw0
>>342
Python は内部格納文字コードに unicode を固定で使用していて、unicode に変換できない文字は使えないし、
unicode に変換した場合に unify などで消える情報は保持できないけど、
ruby は特定の文字コードを仮定した内部コードを持たないため、programing や library の実装でどうにでもなる。
初心者には Python の実装がわかりやすいけど、文字コードそのものをいじりたいレベルになると嵌ることがある。
概要は ruby m17n とかで、検索してい関連しそうな記事を読んで見ると良いかと。
345デフォルトの名無しさん
垢版 |
2020/10/09(金) 11:44:47.75ID:vl+UDRkB
うそはいかんよ
python は binary も自由に扱える
2020/10/09(金) 12:08:49.92ID:8qJEmYsV
>>345
バイナリは文字じゃないので文字列の長さすらわからない
低機能なデータ形式でしかない
347デフォルトの名無しさん
垢版 |
2020/10/09(金) 12:37:20.08ID:vl+UDRkB
ruby は文字じゃないものの文字列長をどうやって計算してるのですか?
2020/10/09(金) 12:38:41.36ID:EjYkYVIx
>>347
文字じゃないものの文字列長なんて計算できるわけ無いでしょ(笑)
だからいろんな文字コードを文字として認識できるようになってる
それに対しPythonはバイナリだから文字列の長さが計算できない(大爆笑)
349デフォルトの名無しさん
垢版 |
2020/10/09(金) 12:44:19.84ID:vl+UDRkB
うそはいかんよ
馬鹿丸出しだから煽りは止めた方が良い
350342
垢版 |
2020/10/09(金) 12:45:15.41ID:hk0qQeVw
>>344
ありがとうございます。
個々の文字列オブジェクトにエンコーディング情報を持たせてるので
文字コードを変換せずにm17nを実現できてる感じですね。
2020/10/09(金) 20:40:06.43ID:phj7/P3X
漢字のようで漢字でないUnicodeの「康熙部首」と「CJK部首補助」
https://techracho.bpsinc.jp/hachi8833/2020_10_07/95257
2020/10/10(土) 09:48:22.75ID:mP3lsNpF
Unicode 3.0って1999年だろうに
2020/10/10(土) 22:38:12.17ID:vUhDQSk6
nuby からの流れで... nkf って今でもメンテされてるようで。
ネットニュースから shar で入手したのはいつの日か。
2020/10/10(土) 23:59:49.31ID:33g/v1Rs
Unicodeの文字の情報を見たいと思ったら
どれを参照すればいいの?
2020/10/11(日) 01:36:12.47ID:PkCT08SK
情報って?
2020/10/11(日) 01:53:31.67ID:QQ2vPcGT
Aという文字の小文字はaであるとか
2020/10/11(日) 02:42:43.61ID:Y6xs0w7V
Unicodeのcode chartにはいちいち文字の説明が書いてあるがそれ以上の説明が欲しいのか否か?

https://unicode.org/charts/
2020/10/11(日) 06:59:02.20ID:QQ2vPcGT
>>357
それらの情報を全て文字ごとに知りたいんだよ
2020/10/11(日) 07:21:36.62ID:X3noy0YM
>>358
"Find chart by hex code:" ってとこにコードポイントを入れてみようw
2020/10/11(日) 07:33:27.40ID:QQ2vPcGT
>>359
情報が全く足りません
2020/10/11(日) 07:34:05.33ID:QQ2vPcGT
Aは大文字であり、対応する小文字はaである
という情報はどこに書かれているのでしょうか?
2020/10/11(日) 08:36:01.64ID:9KwtZAoB
https://unicode.org/charts/PDF/U0000.pdf
これの
LATIN CAPITAL LETTER A
LATIN SMALL LETTER A
区別じゃ足りないかい?
2020/10/11(日) 08:49:30.81ID:biiSH/I3
> 0041 A LATIN CAPITAL LETTER A
少なくとも「Aは大文字」は明記されてるけど??

> 0061 a LATIN SMALL LETTER A
小文字aの定義の記述から対応する文字も分かると思うんだけど
それじゃわからないということであれば、
「大文字Aに対応する小文字はaである」みたいなことは
Unicodeの仕様書じゃなくて英語圏の小学生or幼稚園児向け教科書とかに書かれてるんじゃないかね
2020/10/11(日) 09:48:07.57ID:EIUTbwb3
何が欲しいか、もっと明確に書かないと伝わらないぞ。
例えばこれとかは使える?
https://unicode.org/Public/UNIDATA/UnicodeData.txt
2020/10/11(日) 10:11:43.02ID:X3noy0YM
>>364
使えるかどうかは能力の問題ですよねw
2020/10/11(日) 10:24:25.43ID:ieSx8e01
>>364
これは対応した項目があるねぇ
装飾のあるアルファベットについても参照番号が載ってる
367デフォルトの名無しさん
垢版 |
2020/10/11(日) 12:14:43.64ID:kZXFoyze
ほう
3041;HIRAGANA LETTER SMALL A;Lo;0;L;;;;;N;;;;;
3042;HIRAGANA LETTER A;Lo;0;L;;;;;N;;;;;
2020/10/11(日) 12:26:01.00ID:j5pFI3Yh
あ、あと文字の幅も知りたい
2020/10/11(日) 12:27:09.66ID:j5pFI3Yh
Aに対応する小文字がaなら
あに対応するカタカナはアという情報があっても
良いと思うのだがあるのか?
370デフォルトの名無しさん
垢版 |
2020/10/11(日) 12:33:22.48ID:kZXFoyze
>>369
曾礼多
2020/10/11(日) 12:36:42.03ID:j5pFI3Yh
>>370
嫁無い
2020/10/11(日) 13:23:05.62ID:a5ebPbEF
1,2,3
2020/10/11(日) 13:26:32.41ID:a5ebPbEF
3042;HIRAGANA LETTER A;Lo;0;L;;;;;N;;;;;
30A2;KATAKANA LETTER A;Lo;0;L;;;;;N;;;;;

ないようだ
2020/10/11(日) 18:56:47.77ID:lNYgVXzm
いい加減自分で調べられるだろ... 釣りか
Unicodeの他のデータとかUnicodeに関するAPIとかにある。

そうやって、全世界が「あーUnicodeでいいね」ってなるように
Unicodeの世界戦略は着々と進んでいるのであった。
2020/10/11(日) 20:41:30.45ID:EIUTbwb3
日本語のマップくらいは自分で作ればいいんじゃね?
https://unicode.org/charts/PDF/U1B000.pdf
2020/10/11(日) 21:37:26.96ID:wm510+AL
変体仮名も収録されてるんだな
2020/10/13(火) 00:47:23.21ID:tEy/04zZ
あをアに対応させるのはtransliterationのカテゴリーらしい、Unicode的には。
日本語だと翻字というのかー。
2020/10/13(火) 06:17:14.44ID:RnL4UaYd
漢字の読み方(複数)もUnicodeで定義されるべきではないのかな?
379デフォルトの名無しさん
垢版 |
2020/10/13(火) 09:57:18.23ID:FpFGKRx+
2020/10/13(火) 13:54:08.89ID:8ughZvwQ
Unicode は文字コードであって漢和辞典ではないし、読みとか何の役にも建たないw
2020/10/16(金) 00:51:17.29ID:zvezW4n7
>>361
大文字小文字を区別しない検索を行うためのデータという意味ならこれ
http://www.unicode.org/Public/UNIDATA/CaseFolding.txt

ある文字が大文字または小文字に該当するかを知りたいなら>>364のデータの
3番目のフィールドを見る。Luなら大文字でLlなら小文字
2020/10/20(火) 08:39:00.75ID:iDoXrFT4
rubyを勉強中の超初心者なのですが、時代遅れだ!みたいな記事をちらほら見かえます。
言語変えた方がいいのでしょうか…?
2020/10/20(火) 10:25:40.98ID:xAfCoP/O
なぜ、ここで、その質問を?
文字コード的には変えるほど意味はない気がする。(むしろ ruby が便利)
複数の言語が使えた方が便利なので、色々試すことはおすすめ。
384デフォルトの名無しさん
垢版 |
2020/10/20(火) 10:30:11.60ID:pHiz9StD
Yes, you can.
2020/10/20(火) 16:20:38.97ID:Nlf6zVNG
はい、あなたは管です。
2020/10/24(土) 21:01:49.65ID:ehxRee/D
いいえ、私は管(くだ)です
2020/10/25(日) 01:00:40.73ID:+b3TKvfL
いいえ、私は菅です。
388デフォルトの名無しさん
垢版 |
2020/12/07(月) 15:52:31.12ID:BlHR3DgB
櫻の絵文字🌸がPCやiPhoneだと花びら5枚なのに
Androidだと4枚ω
2020/12/07(月) 16:34:11.79ID:TmqbbT66
>>388
また友達に騙されちゃったんだね…
390デフォルトの名無しさん
垢版 |
2020/12/07(月) 21:30:49.12ID:8FTbf1dJ
utf8でshiftjisで言う
iskanji()
iskanji2()
ishira()
iskata()
みたいなイディオム教えてください
2020/12/08(火) 11:51:17.55ID:3Lge4PBr
>>390
utf8のコードがshiftjisに変換可能かチェックして、可能なら変換したコードに
そのイディオムとやらを使えばいいのでは?
2020/12/08(火) 12:25:05.31ID:no2frcgf
>>391
shiftjisは扱わないのでutf8での方法を教えてください
2020/12/08(火) 17:31:43.20ID:/pT3aml4
>>390
Unicodeプロパティがサポートされているなら
正規表現で\p{Hiragana}とかが使える
サポートされてないなら自分でコードポイントの範囲を調べて頑張る
2020/12/08(火) 18:36:17.22ID:E4wQPgos
長音(ー)とかの扱いがめんどくさい
395デフォルトの名無しさん
垢版 |
2020/12/09(水) 06:33:19.08ID:Hs7wcc9u
ちょっと疑問に思ったのだけど、
utf8 の iskanji を作るとしたら、繁体字とかも含めますか?
それとも今は JISx0213:2004(11233文字) だけ?
それともこれの次の標準化規格になるものってありましたっけ?
396デフォルトの名無しさん
垢版 |
2020/12/09(水) 06:43:54.04ID:Hs7wcc9u
ishankana() みたいなもの、javascript 版
if( /^[アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンァィゥェォャュョッ、。ー「」゙゚・]/.test('ア') )
{
console.log( '半角カタカナです');
}
2020/12/09(水) 07:34:03.35ID:qbXHpF4v
そのiskanjiとやらであなたが何を判定したいか次第だと思うんだけど・・
サロゲートペアの漢字とかも気にしなきゃだめだろうねえ
2020/12/09(水) 08:14:17.98ID:TKgHvdMy
>>396
半角カナは後ろの方の文字コードでかたまってるから簡単じゃろ。

漢字とか結構カオスでテーブル作ったほうが良さそうだね。
必要文字コード列挙してバイナリサーチするアルゴリズムがええのかな?

厳格でなくていいなら半角カナみたいに文字コードテーブルみて
ざっくり判定でも割と行けるとは思うけど。
399デフォルトの名無しさん
垢版 |
2020/12/09(水) 09:06:33.04ID:Hs7wcc9u
そういえば前に、amazon kindle端末用の電子書籍データ云々でここに書きこんだ記憶が、
と思い当って見直してみたら2か月前でした・・・、

私の方は KDP の仕様にあってるかどうかをチェックするのが目的だったのですが、
確かにカオスでしたね。ちなみに半角カナのコードを出しておいてあれなのですが、
JISx0213 規格的には半角カナは含まれてないっぽいです(x0208も同様です)。
チェック用のプログラムは結局普通の配列に規格の文字を全部入れておいて、
そこにあれば OK なければ NG という感じになりました。
サロゲートペアの扱いも面倒だったし。

あ、今気づいたけれど、JISx0213 的には全角英数記号ってもしかして NG なのでは?
いやでも wiki のページでは SJISコードは全角になってるし・・・、
400デフォルトの名無しさん
垢版 |
2020/12/09(水) 09:18:54.21ID:bCzZQrOf
ライブラリ内ではユニコードスカラー値についてのみ取り扱うと良いと思います。
2020/12/09(水) 13:23:38.64ID:y7KEYUhD
Ruby の古いNKF を使うと、片仮名・平仮名の変換もできるけど、
片仮名・平仮名を判定するメソッドはない

たぶん、NKF の内部では、そういう関数があるのだろけど、公開されていないのかも

module NKF
https://docs.ruby-lang.org/ja/latest/class/NKF.html

require 'nkf'

p NKF.nkf( '-m0 -h3 -w', 'あイ' )
#=> "アい"
2020/12/09(水) 13:25:03.81ID:rIU0lDlE
オプションそのまま文字列で渡すとか
ダッセェインターフェースだな
手抜きにも程がある
403401
垢版 |
2020/12/09(水) 14:41:10.37ID:y7KEYUhD
Ruby の正規表現・鬼雲で判別できた

re_hira = /\p{hiragana}{1}/ # 平仮名
re_kata = /\p{katakana}{1}/ # カタカナ

str = '愛あいカキうクx'

str.each_char do |ch|
ch.match( re_hira ){ |md| puts "平仮名 : #{ md[ 0 ] }" }
ch.match( re_kata ){ |md| puts "カタカナ : #{ md[ 0 ] }" }
end

出力
平仮名 : あ
平仮名 : い
カタカナ : カ
カタカナ : キ
平仮名 : う
カタカナ : ク
404デフォルトの名無しさん
垢版 |
2020/12/09(水) 15:27:54.98ID:tBDPYy0r
>>402
tcl/tk
2020/12/09(水) 16:19:55.89ID:H89RJ3R9
こゝろ
406401
垢版 |
2020/12/09(水) 17:51:11.38ID:y7KEYUhD
>>403
を修正

Ruby の正規表現・鬼雲で、平仮名・カタカナ・漢字を判別した

re_hira = /\p{Hiragana}{1}/ # 平仮名
re_kata = /\p{Katakana}{1}/ # カタカナ
re_han = /\p{Han}{1}/ # 漢字

str = 'Aあい善悪カキ愛うクx'
p str.encoding #=> <Encoding:UTF-8>

str.each_char do |ch| # 1文字ずつ処理する
ch.match( re_hira ){ |md| puts "平仮名 : #{ md[ 0 ] }" }
ch.match( re_kata ){ |md| puts "カタカナ : #{ md[ 0 ] }" }
ch.match( re_han ){ |md| puts "漢字 : #{ md[ 0 ] }" }
end

出力
平仮名 : あ
平仮名 : い
漢字 : 善
漢字 : 悪
カタカナ : カ
カタカナ : キ
漢字 : 愛
平仮名 : う
カタカナ : ク
2020/12/09(水) 18:21:03.27ID:L/x3uoyo
C++かC#でお願いします
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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