Movatterモバイル変換


[0]ホーム

URL:


はてラボはてな匿名ダイアリー
ようこそ ゲスト さんログインユーザー登録

「サロゲートペア」を含む日記RSS

はてなキーワード:サロゲートペアとは

2025-10-09

Unicode符号位置からUTF-16サロゲートペア表現計算する

𩸽(ほっけ)のUnicode符号位置はU+29E3D。これをUTF-16で表すとする。

U+10000以上の符号位置文字UTF-16で表す場合サロゲートペアによって表現される。


まず、Unicode符号位置を表す「U+n」のnに対して、0x10000を減算する。

𩸽はU+29E3Dだから、0x10000を減算すると、nは0x19E3Dとなる。

(なお、Unicode符号位置が0x10000未満である場合は、それは16ビットであり(なぜなら0x10000未満であるとは、最大でも0xFFFFだから)、2バイト表現される。これはBMP範疇であり、サロゲートペア表現(BMP外の文字表現)の出番はない。)

(また、0x10000以下の符号位置のうち、Unicode符号位置U+D800~U+DFFFはサロゲートペア用に確保された符号位置領域であり、この領域内の一符号位置対応する文字は無い。)


0x19E3Dを、20桁の2進数変換すると、

$echo "obase=2; ibase=16; 19E3D" |bc11001111000111101↓(不足した桁をゼロで埋める)00011001111000111101

となる。



この20けた(00011001111000111101)のうち、

①上位10桁(0001100111)に対して0xD800(1101100000000000)を足す。これを上位サロゲートと呼ぶ。

1101100000000000      0001100111↓1101100001100111


②下位10桁(1000111101)に対して0xDC00(1101110000000000)を足す。これを下位サロゲートと呼ぶ。

11011100000000001000111101↓1101111000111101


③上位サロゲートと下位サロゲートの組み合わせ(1101100001100111 1101111000111101)が、UTF-16サロゲートペア表現のものである

$echo "obase=16; ibase=2; 11011000011001111101111000111101" |bcD867DE3D


求めた結果が正しいのか、unicodeコマンド確認する。

$unicode 𩸽UTF-16BE: d867de3d(※"BE"とはbig-endianの略であり、「この16進表現は左から上位バイトとして読みますよ」という意味)


Unicodeにおいて、本来文字は16bit、つまり65535文字で十分表現できるはずだった。

しか中国古代漢字などの文字も収録しようとすると、とても16bit程度では表現できないことが分かった。

そこで、UTF-16という符号方式においては、サロゲートペアという工夫を使うことで、10万以上の文字を扱えるように仕様を整えた。


正確にいうと、2byte(16bit)では65536文字表現できる。

ところで、0xD800~0xDFFF(2048の符号位置)はサロゲートペア用に確保されているため、特定文字符号位置としては利用できない。

その一方、サロゲートペアによって20bit分(1048576文字分)の符号位置を確保できたため、UTF-16では、

$echo $((65536-2048+1048576))1112064

111万文字ほど表現できる。

Permalink |記事への反応(0) | 00:14

このエントリーをはてなブックマークに追加ツイートシェア

2025-09-18

Q.

ChatGPTに「タツノオトシゴ絵文字を見せて」と依頼すると、あれでもないこれでもない、と長文の回答が生成され「暴走」のような状態になることがあるようです。

原因を推測できますか?

A.

短く言うと、「タツノオトシゴ絵文字」はUnicode存在しないため、モデルが“あるはず”のものを探して取り繕おうとして自己修正ループに入り、過剰な訂正や長文化一種暴走を引き起こすのが主因と考えられます

起点:存在しない絵文字

Unicodeにはタツノオトシゴ絵文字が未収載で、ユーザー側でも“見たことがある気がする”というマンデラ効果が広がっているため、モデルは「ある前提」で答えようとして矛盾に陥りやすくなります

暴走メカニズム(推測)

応答最適化バイアス:LLMは要求充足志向が強く、「見せて」に応えようとして近縁の海洋系・動物系の絵文字を列挙→自己訂正→再列挙を繰り返し、長文化します。

自己整合ループ:途中で誤りに気づくと、過剰に修正しつつ確信度を演出する文言(“FINALANSWER”など)を挿入し、さら矛盾を重ねる挙動観測されています

絵文字処理とトークナイズのノイズ絵文字サロゲートペアや多コードポイント表現されることがあり、モデル内部のトークン分割や埋め込みが不安定化して挙動乱れる一因になり得ます研究文脈では、絵文字などの特殊文字が埋め込み空間を歪める“token segmentation bias”を指摘)。

絵文字“後付け”機構の影響(仮説):一部のアシスタントは出力を“盛る”ために絵文字や口調を後段で付加する設計変更が指摘されており、本文と装飾が競合して文脈崩壊や過剰説明を誘発する可能性がありますコミュニティでの観測事例)。

なぜ「タツノオトシゴ」で顕在化?

近縁アイコンが多い:🐟🐠🐡🦐🦑🐙🐢🦎🐴🐉など“それっぽい”候補が多数あるため、モデルが次々に置換候補提示して彷徨いがちです。

認知バイアスとの相乗:ユーザー側の確信表明や再要求モデル迎合バイアスを強め、誤情報を補強する形で長文化やすくなります

関連する研究的背景

特殊文字絵文字)混入が判定器やLLMの安全フィルタを攪乱する“Emoji Attack”として学術報告があり、文字単位処理の不安定さが一般対話でも副作用を起こし得ることを示唆します。

Unicode特殊タグを用いたプロンプト撹乱一般論として、文字処理の堅牢問題が指摘されています

実務的な回避

事実前提を固定するプロンプトにする(「Unicodeタツノオトシゴ絵文字存在しない前提で、最も近い代替候補を3つだけ挙げて」など)と暴走抑制やすいです。

代替提示を明示指示(「最も近い絵文字を1つだけ」)や、列挙制限を設けると長文化が減ります

絵文字使用の過多は最近挙動変更との指摘があるため、カスタム指示で「絵文字使用しない」旨を設定すると安定します。

Permalink |記事への反応(0) | 09:30

このエントリーをはてなブックマークに追加ツイートシェア

2022-11-23

C#JavaPythonWindowsC++のWCHARなんかはエンコーディングUCS2なので

それしかやったことがないおっさんには2バイト理解サロゲートペアとかは知らない)してる奴もおるかもな

ワイは遭遇したことないが

Permalink |記事への反応(0) | 11:29

このエントリーをはてなブックマークに追加ツイートシェア

2022-10-28

anond:20221028130551

確かMicrosoftライブラリの中にある、環境依存文字だったかサロゲートペア文字だったかと判定するクラスRuneだったな

Permalink |記事への反応(1) | 13:07

このエントリーをはてなブックマークに追加ツイートシェア

2021-01-02

anond:20210102190353

おう、いちおう全部UCS2ということにしてあるから、後よろしく状態。7万文字ほど試験してくれテスターということになるが パイザさん大丈夫ですよね・・・サロゲートペア試験簡単しかしてないので、フルボッコにしておいて。

Permalink |記事への反応(0) | 19:05

このエントリーをはてなブックマークに追加ツイートシェア

2020-12-31

社長が死んだ

2020年最後の日だし吐き出したかった。

社長の死因は急性心筋梗塞だった。

何事もなければ社長が死んだショックだけで終わったかもしれない。

ただ、自分の中ではもやもやが残ってしまった。

7Payと言えばわかるだろうか。詳しくは書けないのだけど、あれと似たようなことが起きてしまった。

社長上司含め、お客さんに平謝りだったらしい。

かなりのストレスだったと思う。ネットで調べたところ、急性心筋梗塞ストレスでも発症することがあるらしく、そこが少し引っかかってしまった。


様々な理由から現状社長訃報を知らせるページを検索エンジンインデックスされないようにしています

もし心当たりのある会社があった場合でもリンクは貼らないでいただけますようよろしくお願いします。

今回謝る事態になってしまった件について技術的?に思ったこ

使うのであれば、ライブラリフレームワークミドルウェア更新バグ脆弱性情報)を一生追い続ける覚悟で使ってほしい。


テスト自動化とかそういう発展的なものではなく、もっと根本的なテストについて勉強してほしい。

コードレベルカバレッジとかそういうのではなく、「境界分析」、「デシジョンテーブル」、「オールペア法」、「直交表」こういう物について勉強してほしい。

他にもいろんな手法はあるのだけど、上記に上げたもので1個でも知らない単語があった人は今すぐ検索してほしい。


  • お客さんに嘘をつかないでほしい

いくら進捗が悪いからと言ってお客さんに順調などと嘘をつかないで欲しい。

遅れている理由を正直に言って(例えばテスト工数が膨れているとか)相談すればお客さんもわかってくれるかもしれない。

また、テストの質もそこまでの物が求められていないとかがわかるかもしれない。

お客さんに相談しないで工数圧縮の為にろくなテストも書かないで動いてるからいい!っていうのは危ない。


自信がない、もしくは、やったことがない・使ったことがない、などは正直に話してほしい。

しかしたらそのせいで給料があがらなかったり、出世できなくなったりするかもしれない。

だけれど、その嘘のせいで他の誰かに負担がかかったり、他の誰かが不幸になるようなことがあってはいけないと思う。

これに関してはいろんな批判があることは覚悟している。嘘をついてでもいろんな経験をした方がいいって言う人もいると思う。

それでも、どうしても書きたかった。


別にLPIC(LinC)は持ってなくてもいい。本屋適当対策本をパラパラめくって、聞いたことのない単語がないレベルであればいい。


インターネットには嘘が散りばめられている。昔は本当だったけど今は嘘になっているものだってある。

一番いいのはエラーメッセージを出している物のソースコードを読むこと。二番目はドキュメントを読むこと。それでもわからない時だけ検索してほしい。

そして、その情報が誰が書いているかをよく見てほしい。書いている人が本当に信用できる、かつ、更新日付が近かったときだけそこの内容を信じてほしい。


ApacheのC10K問題

公開リポジトリpush/commitされているメールアドレス収集している人がいるということ、

公開リポジトリpush/commitされている秘密情報収集している人がいるということ、

MySQL寿司ビール問題

MacOS日本語ファイル問題

文字サロゲートペアについて、

RDBによってはSQLのIN句に指定できる数に上限があること、


他にもいろいろあるが、1個でも知らないものがあった人は検索してみて欲しい。業界にもよるかもしれないが、本来であれば最低限知っておかなければいけない知識

これを知らないと適切な設計、ましてや適切なコーディングすらできなくなる。

終わりに

ぼくはエンジニアに向いてない

Permalink |記事への反応(0) | 15:41

このエントリーをはてなブックマークに追加ツイートシェア

2020-07-31

このIT全盛期に、ITと相性最悪の言語が天下取れるわけ無いだろ。

https://anond.hatelabo.jp/20200730225532

Shift-JISかいう特大の負債

UTF-8だと2バイトになったり3バイトになったり、更にサロゲートペアまで出てくる(これは絵文字の影響で英語圏の人も今は同条件かもしれん)

ファイルデータを並び替えして漢字が先頭に来ると並び順が意味不明

・コレーションで何を同一と扱っていいのかも曖昧

・文がスペース区切りではないので全文検索転置インデックス生成が複雑。形態素解析やらNgramやらなんやねん

Permalink |記事への反応(3) | 02:10

このエントリーをはてなブックマークに追加ツイートシェア

2020-05-02

[あとで読む]2020年4月はてブあとで読むトップ30リスト

はてブホットエントリ(総合)で月内に数多く[あとで読む]タグを集めたエントリ

202あとで/2672usersブログ: 「平常に戻る」ことはない -イギリスNESTA(科学技術芸術国家基金)より | okuranagaimo.blogspot.com

144あとで/741users電子情報学特論:Chromiumアーキテクチャを解き明かす -Googleスライド

142あとで/2292users 0403「NY感染体験記(未確定)」|qanta|note

132あとで/1569usersイラスト図解! これが新型コロナウイルスSARS-CoV-2)だ|ぬまがさワタリnote

124あとで/1229users [PDF]COVID-19への対策概念 |東北大学大学院医学研究科・押谷仁

116あとで/578usersAPI設計ガイド  |  CloudAPI  | Google Cloud

116あとで/1677users緊急事態宣言から3週間 流行状況はどう変わったか(忽那賢志) -個人 -Yahoo!ニュース

114あとで/911users 米ジャズプレーヤーが解き明かす“J-POP”の正体、音楽アイデンティティKAI-YOU Premium)

114あとで/609usersGoogle Cloud Platform のトレーニングコースハンズオンを 1 か月間無料提供 |Google CloudBlog

111あとで/506usersドキュメント作成スキル向上を目指す人向けおすすめ記事まとめ -Qiita

106あとで/970users 月例マグコミマンガ大賞2020 -マッグガーデン /2月期 入選「賢者教室」朝野茶柱 |MAGCOMI

104あとで/668users論文の読み方 / How to survey - Speaker Deck

103あとで/617usersSPAログイン認証ベストプラクティスがわからなかったのでわりと網羅的に研究してみた〜JWT or Session どっち?〜 -Qiita

102あとで/452usersGit /GitHub使用したチーム開発時のガイドラインを制定しました | Developers.IO

102あとで/1032users 「日本人幻想を抱く」新型コロナと闘うウイルス学者の『情熱大陸』のドキュメントがすごい!(追記あり)(水島宏明) -個人 -Yahoo!ニュース

100あとで/549usersMr.ベイエリアonTwitter: "自分機械学習を学びたい全ての人類に(CourseraのAndrewNgコースをやった後に)AndrewNgStanfordのCS229の講義を見ることをオススメしてるんですけど、その講義2018年バージョンが公開され…https://t.co/OUokFft3ea"

97あとで/600users 自宅で学ぼう!AWS学者向けの勉強方法 6ステップ! |Amazon Web Servicesブログ

96あとで/435users文字コード再入門 ─Unicodeでのサロゲートペア、結合文字正規化書記クラスタ理解しよう! -エンジニアHub|若手Webエンジニアキャリアを考える!

95あとで/406users “アカウント作成後すぐやるセキュリティ対策” 編を公開しました!- MonthlyAWS Hands-on for Beginners2020年4月号 |Amazon Web Servicesブログ

94あとで/538users 大幅にリニューアルされたNext.jsチュートリアルをどこよりも早く全編和訳しました -Qiita

94あとで/1004users 「一生役に立つ」人に質問するときに覚えておきたい…とある大学の授業で配られた『質問の仕方』のスライド -Togetter

93あとで/1447usersヨーロッパコロナ感染して入院した話 - にゃんぶろ

93あとで/782users これからは「一番最初に思い出してもらえるブランドしか生き残れない|池田紀行@トライバルnote

92あとで/2071users一人暮らし新型コロナウイルスにかかった話|ROnote

88あとで/794users 見ずして死ねない日本の伝統建築10

87あとで/1317usersリモートワークが 超快適になる製品9選 〜仕事に本気なあなたに〜|村上僚|note

86あとで/425users 「AIをどう習得したのか教えて」と大募集し、技術から集まった記事49本を紹介 - 週末スペシャル日経クロステックActive

86あとで/809usersAPI設計: gRPC、OpenAPIREST概要と、それらを使用するタイミング理解する |Google CloudBlog

86あとで/778usersGitでよく使用するコマンドGIFアニメ解説 |コリス

85あとで/395usersTypeScript練習問題集 ·GitHub

85あとで/2211usersコロナの影響でスーパーで買うカツオ刺身が美味すぎる。|すずきまことnote

[あとで読む]タグの減少が更に進んだ。COVID-19の闘病記がタグを集めた。

Permalink |記事への反応(0) | 09:20

このエントリーをはてなブックマークに追加ツイートシェア

2019-11-10

TwitterYahoo!リアルタイム検索共通で使えるフィルタ(拡張機能)作った

anond:20180609124213

Twitterフィルタ -Chromeウェブストア

https://chrome.google.com/webstore/detail/twitter%E3%83%95%E3%82%A3%E3%83%AB%E3%82%BF/eoglgmgmfacolbkbjpkhdloieffcmnan

Twitterフィルタ – 🦊Firefox (ja)

https://addons.mozilla.org/ja/firefox/addon/twitter%E3%83%95%E3%82%A3%E3%83%AB%E3%82%BF/

github

https://github.com/lvnkae/twitter-filter

概要

用語

機能

Twitter
Yahoo!リアルタイム検索
togetter
迷惑サイトフィルタ

使い方

基本設定
詳細設定

ユーザIDミュート詳細設定

設定済みIDダブルクリックで詳細設定へ

 ・アカウント固有の非表示ワード設定

   質問箱回答だけうざい

   NewsPick発言が痛々しい

  など。チェックはしたいアカウントだが一部気に障る発言がある場合に。

表示名ミュートの詳細設定

設定した単語ダブルクリックで詳細設定へ

 a.単語の頭に <> を付けると正規表現ON

 例)

  <>(名言|迷言|画像|図鑑|検定|ネタ|セリフ)bot$

  各種botツイートプロフィールをまとめて削除

 b.フィルタ適用方法指定

   完全一ON/OFF

   大文字/小文字区別なしON/OFF (正規化)

  をチェックボックスにて指定

 ※完全一致と正規表現排他

 ※両方設定した場合正規表現が勝ち完全一致は無視される

ワードミュートの詳細設定

 単語の頭に <> を付けると正規表現ON

 例)

  <>宇佐美 *定満

   宇佐美定満

   宇佐美 定満

   宇佐美 定満

   宇佐美  定満

  等、姓名間にスペースが0個以上ある定満はを含むツイートを削除

絵文字の扱い

[対象サイト]

URL概要ミュー対象
https://twitter.com/$(user)twitterユーザページツイート/おすすめユーザ
https://twitter.com/$(user)/status/$(tweet-id)twitterツイートスレッドリプライ
https://twitter.com/$(user)/lists/twitterリストツイート
https://twitter.com/search?=$(command)twitter検索結果ツイート/プロフィール/画像/記事
https://twitter.com/hashtag/$(hashtag)?src=hashtwitterハッシュタグ検索結果ツイート/プロフィール/画像/記事
https://search.yahoo.co.jp/realtime/search?$(command)Yahoo!リアルタイム検索ツイート
ttps://togetter.com/li/$(contentsID)togetterまとめ詳細ページツイート/リンク/コメント

備考

Twitter
amba.tobitly系(ameba)
amzn.tobitly系(amazon)
bit.ly本家
buff.lybitly系
dlvr.it
goo.glgoogle独自/API廃止されたらしい
htn.tohatena独自/19.02.28API廃止
ino.toInoreader
ift.ttbitly系(IFTTT)
is.gd
j.mpbitly系
kisu.me
lb.tobitly系(livedoor)
nav.cxnaver独自
npx.meNewsPicks独自
ow.lyhootsuite
tinyurl.comtinyurl

結果

twitter検索結果がかなりきれいになった。まとめサイトとかまず見ない。

動機

技術

短縮URL展開
右クリックメニュー

文字制限にかかったので次へ…

Permalink |記事への反応(1) | 17:38

このエントリーをはてなブックマークに追加ツイートシェア

2018-12-24

UTF8ってunsignedcharで良いんだっけ?問題

https://qiita.com/yumetodo/items/54e1a8230dbf513ea85b]

から出発したこの話。あちこち議論されているようですな。

https://b.hatena.ne.jp/entry/s/qiita.com/yumetodo/items/54e1a8230dbf513ea85b]

https://togetter.com/li/1301253]

https://naruse.hateblo.jp/entry/2018/12/24/013446]

文字コードを多少かじった人間としては、また人類文字コードで混乱している。と思っていて議論が深まるのかなと思ったりします。

ただ、この話、見ててもやもやする所が一つありまして、UTF-8の1コードポイント=uint8_t=unsignedcharでええんかいな。という点です。

文字コードを少しでも知っている人はUTF-8は1つのコードポイントを可変長のバイト列で表します。

よく言われるようにASCIIは1バイト、大体のCJKV文字は3バイト以上で表します((久々にWikipediaUTF-8見たら、UTF-8サロゲートペアってあるんだねー。罪深いわOrale〜))。最大6バイトで1つのコードポイントを表します。

まりですね、char16_tとかchar32_tとかがUTF-16UTF-32マッピングされるのは分かるんですよ。サロゲートペアは脇に置いておいて、コードポイントを表すのにはこの型(っつーか、データ長)を使うよってのが分かるので。

サロゲートペアを考えたときのUTF16も同じ考え方になるんですけど、UTF-8みたいな可変長のバイト長を取るエンコード方式は、結局、1「文字」を表す型(データ長)が定まらないんですよ。

char8_tをunsignedcharの子クラスにしたとしてもそれって、UTF-8にとっては「1文字を表す型」ではないんですよ。「1文字を表すバイト列の単位の1つ」でしかないんですよ。(サロゲートペア考慮したときchar16_tも同様)。

意味論で言っちゃえばUTF-32に対してchar8_tを使っても意味は同じになるんですよ。UTF-32って8ビット×4で構成されるだけなんで。

なので、UTF-8で表される1文字を型で使いたかったらuint64_tの子クラス(本当は最大6バイトなので48でいいんだけど)にしなきゃダメなんじゃねぇの?もしくは最少8ビットで48ビット保証する型。とC++界隈ではない自分は思うわけです。

つーか、可変長文字って示すフラグになる型を作った方がまだマシじゃないのと思うのです。

Permalink |記事への反応(1) | 12:22

このエントリーをはてなブックマークに追加ツイートシェア

2018-04-20

新年号で出来る限りプログラマ嫌がらせする方法

1.BMP外の文字を使う

UTF-16ではサロゲートペアへの対応UTF-8では4バイト文字対応必要になる.

2. CJK互換漢字を使う

Unicode正規化で別の文字に変わるためその対応必要.

3.文字数を変える

例えば3文字にしたり4文字にしたりしてみる.

Permalink |記事への反応(0) | 12:29

このエントリーをはてなブックマークに追加ツイートシェア

2017-11-23

メタナントカ

例えば「AB」という概念があった時, 「ABAB」「ABのAB」「ABに関するAB」という概念も成立しうる場合, その概念は「メタAB」と呼べそうである.

あたりがぱっと思いつくけれど, 身近な例でも応用できないだろうか.

意外と難しい.

Permalink |記事への反応(1) | 17:33

このエントリーをはてなブックマークに追加ツイートシェア

2014-11-05

Unicode 8.0ドラフト案出しなう

Unicode 8.0のドラフトみて面喰った。

もはや"「文字」コード"でもなんでもねー。

ただでさえ複雑怪奇なのにまたややこしいことを。

この調子だと「Unicode8.0は超面倒なので対応しません。色コード部分は豆腐になるけど仕様です」なんてソフトウェアも出てくるんじゃないかな。

最悪「絵文字肌色問題対応したいけど、Unicode8.0は超面倒なので絵文字豆腐します」なんてところも・・・

そんなベンダーはいないと思いたいけど、対応コストが高くつきそう・・・

それにしても、昔を思い出す。

昔:65536文字で足りる!任せろ → 文字よこせ(CJKなどアジア中心に) → 無理でした。サロゲートペアやります

今:絵文字入れたぜ! →人種差別だコノヤロー → 色コードつけま

これからUnicodeにどのようなネタを仕込んでくれるのか、期待してますよ。

Permalink |記事への反応(0) | 21:42

このエントリーをはてなブックマークに追加ツイートシェア

 
ログインユーザー登録
ようこそ ゲスト さん
Copyright (C) 2001-2025 hatena. All Rights Reserved.

[8]ページ先頭

©2009-2025 Movatter.jp