Author Topic: *Суррогатные пары в UTF-16  (Read 194 times)

0 Members and 1 Guest are viewing this topic.

Offline Red Khan

  • Global Moderator
  • *
  • Posts: 54224
  • Gender: Male
on: October 12, 2020, 18:22
Интересный момент, если вставить в форму полного ответа какую-нибудь экзотику типа тюркских рун или клинописи то предпросмотр не работает, пишет что сообщение пустое.
Вот вам руны и клинопись для теста, если интересно.
𐱅𐰭𐰼𐰃
𐎠𐎼𐏁𐎴𐎡

Offline Bhudh

  • Posts: 60805
  • Gender: Male
  • aka 蝎
    • Сайты по языкознанию
Это из-за того, что PHP не воспринимает строки, состоящие только из суррогатных пар.
Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

Offline Red Khan

  • Global Moderator
  • *
  • Posts: 54224
  • Gender: Male
Это из-за того, что PHP не воспринимает строки, состоящие только из суррогатных пар.
Так и знал что узнаю что-нибудь новое о юникоде, спасибо.
The term "surrogate pair" refers to a means of encoding Unicode characters with high code-points in the UTF-16 encoding scheme.

In the Unicode character encoding, characters are mapped to values between 0x0 and 0x10FFFF.

Internally, Java uses the UTF-16 encoding scheme to store strings of Unicode text. In UTF-16, 16-bit (two-byte) code units are used. Since 16 bits can only contain the range of characters from 0x0 to 0xFFFF, some additional complexity is used to store values above this range (0x10000 to 0x10FFFF). This is done using pairs of code units known as surrogates.

The surrogate code units are in two ranges known as "high surrogates" and "low surrogates", depending on whether they are allowed at the start or end of the two-code-unit sequence.

Таки они заполнили юникод. :)

Offline Bhudh

  • Posts: 60805
  • Gender: Male
  • aka 蝎
    • Сайты по языкознанию
Ну как заполнили. Суррогатные пары в диапазоне U+D800 — U+DFFF размещены.
Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

Offline Red Khan

  • Global Moderator
  • *
  • Posts: 54224
  • Gender: Male
Ну как заполнили. Суррогатные пары в диапазоне U+D800 — U+DFFF размещены.
А зачем тогда они нужны?

Offline Валентин Н

  • Posts: 44650
  • Gender: Male
Эмодзи тоже не видит.
Нижниь ıндэкс в ҷıсʌах — степень тıсяҷı.
Препинания авторские!

Offline Bhudh

  • Posts: 60805
  • Gender: Male
  • aka 蝎
    • Сайты по языкознанию
А зачем тогда они нужны?
Из них составляются все коды высших диапазонов в UTF-16. Low_surrogate_code + high_surrogate_code.
Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

Offline Red Khan

  • Global Moderator
  • *
  • Posts: 54224
  • Gender: Male
А зачем тогда они нужны?
Из них составляются все коды высших диапазонов в UTF-16. Low_surrogate_code + high_surrogate_code.
Если глянуть на эту схему и её описание то не все, только D8–DF
(wiki/en) File:Unifont_Full_Map.png

Или которые с F9 тоже суррогатные пары?

Offline Bhudh

  • Posts: 60805
  • Gender: Male
  • aka 蝎
    • Сайты по языкознанию
Quote
Code points from U+010000 to U+10FFFF​
Code points from the other planes (called Supplementary Planes) are encoded as two 16-bit code units called a surrogate pair, by the following scheme:
  • 0x10000 is subtracted from the code point (U), leaving a 20-bit number (U') in the hex number range 0x00000–0xFFFFF. Note for these purposes, U is defined to be no greater than 0x10FFFF.
  • The high ten bits (in the range 0x000–0x3FF) are added to 0xD800 to give the first 16-bit code unit or high surrogate (W1), which will be in the range 0xD800–0xDBFF.
  • The low ten bits (also in the range 0x000–0x3FF) are added to 0xDC00 to give the second 16-bit code unit or low surrogate (W2), which will be in the range 0xDC00–0xDFFF.
Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

Offline Red Khan

  • Global Moderator
  • *
  • Posts: 54224
  • Gender: Male
Вроде разобрался, спасибо.
Quote
Surrogates
The UCS uses surrogates to address characters outside the initial Basic Multilingual Plane without resorting to more-than-16-bit byte representations. There are 1024 "high" surrogates (D800–DBFF) and 1024 "low" surrogates (DC00–DFFF). By combining a pair of surrogates, the remaining characters in all the other planes can be addressed (1024 × 1024 = 1048576 code points in the other 16 planes).
(wiki/en) Universal_Character_Set_characters#Surrogates

То есть в юникоде есть полоскости и вся клинопись, тюркские руны, египетские иероглифы и прочяя находятся не в "основной многоязычной плоскости" (плоскости 0) вместе со всякими латиницами-кириллицами-арабицами-иероглифами, а в "дополнительной многоязычной плоскости" (плоскости 1). А вот эти суррогатные пары по сути являются "ссылкам" или "ярлыками" на другие плоскости. Уровни сумрака, блин. :)
(wiki/ru) Плоскость_(Юникод)

Эмодзи тоже не видит.
Эмодзи в той же первой плоскости.

 

With Quick-Reply you can write a post when viewing a topic without loading a new page. You can still use bulletin board code and smileys as you would in a normal post.

Note: this post will not display until it's been approved by a moderator.
Name: Email:
Verification:
√49 Напишите ответ строчными буквами:
«Сто одёжек, все без застёжек» — что это?: