2010-06-03 3 views
0

У меня есть эта функция внутри файла PHP:Будет ли эта кодировка проблемой в будущем?

mysql_query("SET NAMES 'utf8'") or die(mysql_error()); 
mysql_query("SET CHARACTER SET 'utf8'") or die(mysql_error()); 

    some stuff happening here, 

rename($src, $dest.$cat); 

Thats на сервере, и установка у меня есть сегодня, который работает (по крайней мере на моих браузерах).

Теперь на моей локальной машине (мой собственный ноутбук с WampServer), это не будет работать, если я не делаю это:

mysql_query("SET NAMES 'utf8'") or die(mysql_error()); 
mysql_query("SET CHARACTER SET 'utf8'") or die(mysql_error()); 

     some stuff happening here 

$cat=utf8_decode($category); 
rename($src, $dest.$cat); 

И я также meta=utf-8 в этом файле PHP.

$ кошка получает свое содержание от mysql_query ...

Я хотел бы знать разницу (почему он не работает так же, как на сервере, так и на моей локальной машине)?

И я хотел бы знать, если это вызовет проблемы в различных браузерах пользователей, имея это так, как это

+0

Действительно ли это вопрос безопасности? – rook

ответ

0

Операции файловой системы в Windows требуют, чтобы вы указали пути/имена файлов в кодовой странице Windows.

SO Я бы предположил, что ваша кодовая страница, вероятно, что-то вроде cp1252, поэтому вы должны использовать utf8_decode. Обратите внимание, что, к сожалению, вы не можете установить кодовую страницу Windows в UTF-8 (65001).

В Linux, с другой стороны, вы можете использовать любую кодировку, которую хотите. Однако вы должны быть последовательными - если вы сохраняете файл с использованием имени файла UTF-8, вы должны прочитать его, используя одну и ту же последовательность байтов.

0

как мета HTML теги и SQL запросы не влияет на файловой системы операций.

это, вероятно, проблема с файловой системой. Windows может перекодировать ваши имена файлов.