Использование PHP для изменения кодировки файлов создает новые строки - PullRequest
0 голосов
/ 29 февраля 2012

Я использую PHP для изменения кодировки файлов, но он генерирует новую пустую строку после каждой строки.

$t_comment = file_get_contents('php://stdin');
$t_comment = iconv("ISO-8859-1", "UTF-8//IGNORE",$t_comment);
echo $t_comment;

Здесь myfile.txt :

line1 [CR] [LF]
line2 [CR] [LF]
line3 [CR] [LF]

Команда преобразования (BATCH):

C:\> type myfile.txt | php.exe myscript.php

или

C:\> php.exe myscript.php < myfile.txt

Результат:

line1 [LF]
[LF]
line2 [LF]
[LF]
line3 [LF]
[LF]

Можете ли вы помочь мне исправить это?

Ответы [ 2 ]

3 голосов
/ 29 февраля 2012

У вас есть альтернативные функции: utf8_encode и mb_convert_encoding, хотя я тестировал iconv локально, и он работает, но я не использую Windows.

Учитывая, что вы находитесь в Windows и используете type для генерации ввода сценария PHP, вам следует проверить кодовую страницу активной консоли, которая может влиять на вывод команды type: http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/chcp.mspx?mfr=true

Во-первых, попробуйте устранить проблему, связанную с iconv, изменив первую строку вашего кода на следующую, и посмотрите, что произойдет:

$t_comment = "line 1 \r\nline 2 \r\nline 3 \r\n";
0 голосов
/ 01 марта 2012

Я обнаружил, что новые строки были сгенерированы из-за команды double pipe.Поэтому я решил объединить оба скрипта, чтобы иметь только одну трубу.

Поэтому я изменил:

C:\> type myfile.txt | php.exe myscript1.php | php.exe myscript2.php

на:

C:\> type myfile.txt | php.exe myscript1-merge2.php

Это решает проблему, но не 't ответить, откуда появились дополнительные символы новой строки.

...