Являются ли символы строки PHP подписанными или неподписанными и почему, например, ord («Ø») не соответствует расширенной таблице ASCII?

пробуя код ниже:

<?php

echo "ORD ~ = ".ord("~");

Основываясь на расширенной таблице ASCII -> http://www.ascii-code.com/ выход

ORD ~ = 126

Это правильно, но затем при выводе чего-либо в расширенную таблицу ASCII, например Ø:

<?php

echo "ORD Ø = ".ord("Ø");

дает:

ORD Ø = 195

В то время как в связанной расширенной таблице ASCII правильный код для «Ø» равен 216. То же самое происходит, например, за (ога ( «√») выходы 226 в то время как правильный расширенный символ ASCII для 226 â и √ даже нет в таблице).

Поэтому мой вопрос таков: строки PHP в основном представляют собой массив строк ($ str [0] для первого символа, $ str [1] для второго, C-подобный и т. Д.), А PHP не иметь голец типа, как PHP обрабатывает 1-байтовый символ, когда он обрабатывает его отдельно, например используя предыдущую функцию ord () и функции pack () и unpack ()?

PHP char не подписан или они подписаны? Какая разница?

Как я должен интерпретировать эту фразу A string is series of characters, where a character is the same as a byte. This means that PHP only supports a 256-character set взяты из руководства по PHP?

256-character это означает, что он поддерживает расширенный ASCII? Но почему тогда эти различия при вызове ord () для расширенных символов ASCII?

Спасибо за внимание!

0

Решение

Ядро PHP в его нынешнем виде не имеет понятия о кодировке символов. Строки — это просто — как ручные состояния — серии байтов (8-битные без знака). Как выходной носитель интерпретирует эти байты … за пределами php.
В вашем примере символ Ø может быть закодирован в формате utf-8, т. Е. Как два байта 195 и 152.
PHP, который не знает о кодировке, обрабатывает эти два байта как два отдельных однобайтовых «символа». ord() учитывает только первый «символ» в строке, и вы получите 195,
Таким образом, ответ: без знака, без кодировки вообще … только байты с указателем длины.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector