Назад | Перейти на главную страницу

Символ евро испортился во время передачи по FTP

Мой клиент использует очень устаревшее управление электронной коммерцией системы на моем хостинге. Для этого продукта поставщик больше не предоставляет поддержки.

Краткое объяснение: сайт магазина, который претензии для работы в стеке LAMP создается старым приложением Windows Visual Basic, работающим в MS Access. Пользователь создает магазин, определяет шаблон HTML, добавляет товары и категории и т. Д.

затем VB exe создает страницы PHP (по одной для каждой страницы шаблона) и сценарий SQL для запуска в MySQL. Он также загружает все через FTP и самостоятельно запускает сценарий установки / обновления.

Эта проблема

При просмотре веб-сайта описания многих продуктов обрезаются до euro подписать. Например, то, что должно было быть «Цена продукта 1000 евро», будет «Цена продукта».

Анализ

Похоже, файл загружается как двоичный. Возможно, на предыдущем хосте клиента все работало нормально, потому что это был хост Windows.

Сервер

Это виртуальная машина Azure под управлением openSUSE 12.2 с обоими vsftpd и openSSH

Вопрос

Не прося клиента вручную загружать файлы с помощью FileZilla или заменяя с участием €, поскольку он отказывается, что я могу сделать на стороне сервера, чтобы vsftpd не испортил знак евро?

Вы можете попробовать изменить кодировку файла SQL вместе с разделителем строк. Или ВЫ можете изменить весь символ на €.

Частичное исправление

Установив набор символов MySQL по умолчанию, отличный от UTF-8, я могу правильно отображать евро

Источник

#default-character-set = utf8
collation-server = latin1_general_ci
#init-connect='SET NAMES latin1_general_ci'
character-set-server = latin1

Первая строка прокомментирована, потому что моя версия MySQL не распознала ее. Третья прокомментирована, потому что я получал ошибку при каждом подключении, зарегистрированном в журнале сервера, и соединение было обрезано (поэтому каждый сайт отключен)

Я говорю, что исправление частичное, потому что я обошел загрузку FTP и запустил SQL прямо в phpMyAdmin с правильным знаком евро