Вопросы о смайликах iPhone и веб-страницах



Итак, эмодзи в основном показывает вышеописанное на компьютере. Это другой язык программирования? Итак, как мне поместить эти маленькие квадратики в файл php? Когда я помещаю его в файл php, он превращается в вопросительные знаки, а что нет. Кроме того, как я могу хранить их в MySQL, не превращая их в вопросительные знаки и другие странные вещи?


person Strawberry    schedule 10.11.2009    source источник


Ответы (3)


как мне поместить эти маленькие квадратики в файл php?

Так же, как и любой другой символ Юникода. Просто вставьте их и убедитесь, что вы сохраняете файл PHP и обслуживаете страницу PHP как UTF-8.

Когда я помещаю его в файл php, он превращается в вопросительные знаки, а что нет

Тогда у вас проблема с кодировкой. Сначала поработайте с символами Unicode, которые вы действительно видите должным образом, например ąαд™日本, прежде чем беспокоиться об эмодзи.

Ваш файл PHP должен быть сохранен как UTF-8; страница, которую он создает, должна обслуживаться как Content-Type: text/html;charset:UTF-8 (или с подобным метатегом); база данных MySQL должна использовать сопоставление UTF-8 для хранения данных, а PHP должен общаться с MySQL с использованием UTF-8.

Однако. Даже если все будет сделано правильно, ПК все равно не будут отображать смайлики. Это потому что:

  1. у них нет шрифтов, которые включают формы для этих символов, и

  2. смайлики по-прежнему совершенно не стандартизированы. Те символы, которые вы опубликовали, находятся в зоне частного использования Unicode, что означает, что они вообще не имеют никакого официального значения.

Каждая сеть в Японии использует разные коды символов для своих смайликов, привязанных к разным областям PUA. Таким образом, даже на другом мобильном телефоне он, вероятно, не будет отображать правильный символ, если только вы не потратите целую вечность на ручное преобразование кодов смайликов для разных сетей. Я предполагаю, что те, что вы разместили выше, принадлежат SoftBank (iPhone?).

Существует постоянное предложение, возглавляемое Google и Apple, чтобы сопоставить смайлики разных сетей и дать им надлежащее стандартизированное место в Unicode. До тех пор заставить смайлики постоянно отображаться в сетях — это упражнение в несчастье. См. обзор персонажей из работы по стандартизации, чтобы узнать, сколько конверсий вы могли бы получить. сделать.

Боже, я ненавижу смайлики. Вся эта боль из-за такой кучи бесполезной твидовой чепухи.

person bobince    schedule 10.11.2009

Это не имеет ничего общего с языками программирования, только с кодировкой и шрифтами. В качестве очень краткого обзора: каждый символ хранится в соответствии с его кодом символа (например: 0x41 = A, 0x42 = B и т. д.), который отображается как значимый символ на вашем экране с использованием шрифта (который говорит: «символ с кодом 0x41 должен выглядеть так...").

Эти эмодзи занимают "частная область использования" в Unicode таблица, представляющая собой набор неопределенных и бесплатных кодов для всех. Это делает их вполне допустимыми кодами символов, просто ни у одного стандартного шрифта нет подходящего символа для их отображения, поскольку они не определены. Только iPhone и другие портативные устройства, в основном в Японии, имеют соответствующие значки для этих кодов. Это сделано для экономии полосы пропускания; вместо того, чтобы передавать относительно большие файлы изображений туда и обратно, эмодзи можно передавать с использованием кода одного символа.

Что касается того, как их хранить: они должны храниться как есть, если вы не пытаетесь преобразовать их в другую кодировку, в этом случае они могут заблудиться. Просто имейте в виду, что они имеют смысл только на iPhone и других телефонах SoftBank в Японии.


http://img.skitch.com/20091110-e7nkuqbjrisabrdipk96p4yt59.png

Если вы используете OSX, вы можете скопировать и вставить символ в средство просмотра символов, чтобы узнать, что это такое. Я думаю, что в Windows есть аналогичная карта символов (хотя и хуже ;-P). Вы можете поместить его через PHP ord(), но это работает только с символами ASCII. См. обсуждение функций UTF8 на странице ord.


Кстати, просто для удовольствия, эти символы отлично отображаются на iPhone как есть, потому что у iPhone есть шрифт со значками для них:

http://img.skitch.com/20091110-bjt3tutjxad1kw4p9uhem5jhnk.png

person deceze♦    schedule 10.11.2009
comment
Так как же найти кодировку для них? - person Strawberry; 10.11.2009
comment
См. редактирование. Что вы можете найти с этим, так это коды символов, кодировка отличается и может быть только угадана (в данном случае это, вероятно, UTF8). - person deceze♦; 10.11.2009

Я использую FF3.5 и WinXP. Я тоже вижу маленькие квадратики в своем браузере.

Это говорит мне о том, что для строки требуется набор символов, не установленный на моем компьютере.

Когда вы помещаете строку в файл PHP, вопросительные знаки говорят вам о том же: ваш компьютер не знает, как отображать символы.

Вы могли бы сохранить эти символы emoji в MySQL, если бы закодировали их по-другому, возможно, используя UTF-8.

Выполните поиск в Интернете по кодировке символов, поскольку она относится к MySQL.

person pavium    schedule 10.11.2009
comment
Для этой строки требуется шрифт, не установленный на вашем компьютере (или на большинстве компьютеров). Набор символов на всех страницах StackOverflow — Unicode, используемый в кодировке UTF-8. - person bobince; 10.11.2009