Я знаю, что этот вопрос старый и уже имеет принятый ответ, но я хочу предложить несколько примеров (надеюсь, что он кому-нибудь пригодится).
Насколько я знаю, старые символы ASCII занимали один байт на символ.
правый. На самом деле, поскольку ASCII является 7-битной кодировкой, он поддерживает 128 кодов (95 из которых можно распечатать), поэтому он использует только половину байта (если это имеет смысл).
Сколько байтов требуется для символа Юникода?
Юникод просто отображает символы в кодовые точки. Это не определяет, как их кодировать. Текстовый файл не содержит символов Юникода, но содержит байты / октеты, которые могут представлять символы Юникода.
Я предполагаю, что один символ Unicode может содержать все возможные
персонаж с любого языка - я прав?
Нет. Но почти. Так что в основном да. Но все же нет.
Так сколько байт ему нужно на символ?
То же, что ваш второй вопрос.
А что означают UTF-7, UTF-6, UTF-16 и т. Д.? Это какой-то юникод
версии?
Нет, это кодировки. Они определяют, как байты / октеты должны представлять символы Юникода.
Пара примеров. Если некоторые из них не могут быть отображены в вашем браузере (возможно, из-за того, что шрифт не поддерживает их), перейдите к http://codepoints.net/U+1F6AA
(замените 1F6AA
на шестнадцатеричный код), чтобы увидеть изображение.
- U + 0061 ЛАТИНСКОЕ МАЛЕНЬКОЕ ПИСЬМО A:
a
- Nº: 97
- UTF-8: 61
- UTF-16: 00 61
- U + 00A9 АВТОРСКИЙ ЗНАК:
©
- Nº: 169
- UTF-8: C2 A9
- UTF-16: 00 A9
- U + 00AE ЗАРЕГИСТРИРОВАННЫЙ ЗНАК:
®
- Nº: 174
- UTF-8: C2 AE
- UTF-16: 00 AE
- U + 1337 ЭТИОПИЧЕСКИЙ СЛОВНЫЙ PHWA:
ጷ
- Nº: 4919
- UTF-8: E1 8C B7
- UTF-16: 13 37
- U + 2014 EM DASH:
—
- Nº: 8212
- UTF-8: E2 80 94
- UTF-16: 20 14
- U + 2030 В МИЛЛЕ ЗНАК:
‰
- Nº: 8240
- UTF-8: E2 80 B0
- UTF-16: 20 30
- U + 20AC ЗНАК ЕВРО:
€
- Nº: 8364
- UTF-8: E2 82 AC
- UTF-16: 20 AC
- U + 2122 ЗНАК ТОРГОВОЙ МАРКИ:
™
- Nº: 8482
- UTF-8: E2 84 A2
- UTF-16: 21 22 * 1132 *
- U + 2603 Снеговик:
☃
- Nº: 9731
- UTF-8: E2 98 83
- UTF-16: 26 03
- U + 260E ЧЕРНЫЙ ТЕЛЕФОН:
☎
- Nº: 9742
- UTF-8: E2 98 8E
- UTF-16: 26 0E
- U + 2614 ЗОНТИК с каплями дождя:
☔
- Nº: 9748
- UTF-8: E2 98 94
- UTF-16: 26 14
- U + 263A БЕЛЫЙ УЛЫБАЮЩИЙСЯ ЛИЦО:
☺
- Nº: 9786
- UTF-8: E2 98 BA
- UTF-16: 26 3A
- U + 2691 ЧЕРНЫЙ ФЛАГ:
⚑
- Nº: 9873
- UTF-8: E2 9A 91
- UTF-16: 26 91
- U + 269B СИМВОЛ АТОМА:
⚛
- Nº: 9883
- UTF-8: E2 9A 9B
- UTF-16: 26 9B
- U + 2708 САМОЛЕТ:
✈
- Nº: 9992
- UTF-8: E2 9C 88
- UTF-16: 27 08
- U + 271E БЕЛЫЙ ЛАТИНСКИЙ КРЕСТ БЕЛЫЙ
- Nº: 10014
- UTF-8: E2 9C 9E
- UTF-16: 27 1E
- U + 3020 ПОЧТА МАРКА ЛИЦА:
〠
- Nº: 12320
- UTF-8: E3 80 A0
- UTF-16: 30 20
- U + 8089 CJK UNIFIED IDEOGRAPH-8089:
肉
- Nº: 32905
- UTF-8: E8 82 89
- UTF-16: 80 89
- U + 1F4A9 КУКЛА ПОО:
?
- Nº: 128169
- UTF-8: F0 9F92 A9
- UTF-16: D8 3D DC A9
- U + 1F680 РАКЕТА:
?
- Nº: 128640
- UTF-8: F0 9F 9A 80
- UTF-16: D8 3D DE 80
Хорошо, меня возятпрочь ...
Забавные факты:
- Если вы ищете определенный символ, вы можете скопировать и вставить его на http://codepoints.net/.
- Я потратил много временивремени в этом бесполезном списке (но он отсортирован!).
- В MySQL есть кодировка "utf8", которая на самом деле не поддерживает символы длиннее 3 байтов.Так что вы не можете вставить кучу пу , поле будет молча обрезано.Вместо этого используйте "utf8mb4".
- Есть тестовая страница снеговика (unicodesnowmanforyou.com) .