Я полагаю, вы захотите проверить, был ли PHP скомпилирован с mbstring (или установлен и включен модуль mbstring, если вы используете модули). Включение этого расширения должно решить ваши проблемы. Эта страница должна рассказать вам все, что вам нужно знать, чтобы заставить ее работать.
Вот код, над которым я работал, чтобы решить проблему mbstring
, с которой я столкнулся. В итоге я перебирал все комбинации кодировок и опций, пока одна из них не представила нужный мне результат. Я чувствую, что такая процедура может помочь вам найти ответ, который вы ищете.
Не полагайтесь на документацию , так как в моем случае результаты были не такими, как я думал, что варианты и кодировки будут делать. Я помню, что в ходе тестирования я получал прямоугольники,? И такие вещи, как A ~. Мое тестирование было точно таким же, как ваше, print_r
информация. В моем случае мой скрипт импортирует информацию о покупателях и продажах в Quickbooks, который не поддерживает UTF-8. (Либо сам QB не может, либо драйвер QODBC не может) Тильды, могилы и умлаты исключены.
It seems as though this question has been out there for a while and whether or not php was compiled with unicode flags does not affect it's unicode support, but if you need to determine whether a given PE image was likely compiled against the Unicode version of the Windows API, you can use dumpbin
to examine the kernel32.dll imports used. This is not exactly something I would do pragmatically, but in a pinch, could work for diagnostics.
For example, a Unicode executable could list:
4C CreateFileMappingW
45 CreateDirectoryW
33 CompareStringW
12E GetCurrentDirectoryW
AF ExpandEnvironmentStringsW
2F0 SetFileAttributesW
noting the number of functions ending in W, aka Wide for unicode characters.
For a ANSI executable or DLL, you may see something closer to:
30A SetCurrentDirectoryA
15E GetFileAttributesA
171 GetLastError
4B CreateDirectoryA
319 SetFileAttributesA
with most of the functions ending in A, we can see the executable was most likely compiled with ANSI flags.
Я думаю, вам следует загрузить официальный двоичный файл из PHP репозитория Windows и установите его (обратите внимание на путь установки).
После этого вам нужно будет настроить apache для использования нового двоичного файла вместо того, который он несет по умолчанию. Это просто:
Найдите файл httpd.conf
в папке WAMP (что-то вроде C: \ wamp \ bin \ apache \ ApacheXXX \ conf \ httpd.conf) - это может быть также можно использовать значок в трее.
Хорошо, теперь, когда вы нашли его, найдите строку, соответствующую LoadModule php5_module
Хорошо, просто замените эту строку своим новым php5_module
, который, вероятно, находится в c : / php / php5apache2_2. dll (вы сохранили путь установки!). Результатом является что-то вроде LoadModule php5_module "c: /php/php5apache2_2.dll"
Вуаля. Перезагрузите wamp-сервер и протестируйте свое приложение с помощью последней версии сборки php специально для Windows.
Я не уверен, что это решит вашу проблему, но, безусловно, это реальный путь. Если у вас возникли проблемы с настройкой php, прочтите эту статью .
Удачи!