Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP更改文件编码会生成换行符_Php_Batch File_Cmd_Iconv - Fatal编程技术网

使用PHP更改文件编码会生成换行符

使用PHP更改文件编码会生成换行符,php,batch-file,cmd,iconv,Php,Batch File,Cmd,Iconv,我使用PHP更改文件编码,但它会在每一行之后生成一个新的空行 $t_comment = file_get_contents('php://stdin'); $t_comment = iconv("ISO-8859-1", "UTF-8//IGNORE",$t_comment); echo $t_comment; 这里是myfile.txt: 第1行[CR][LF] 第2行[CR][LF] 第3行[CR][LF] 转换命令(批处理): 或 C:\>php.exe myscript.php

我使用PHP更改文件编码,但它会在每一行之后生成一个新的空行

$t_comment = file_get_contents('php://stdin');
$t_comment = iconv("ISO-8859-1", "UTF-8//IGNORE",$t_comment);
echo $t_comment;
这里是myfile.txt:

第1行[CR][LF]
第2行[CR][LF]
第3行[CR][LF]

转换命令(批处理):

C:\>php.exe myscript.php
结果:

第1行[LF]
[LF]
第2行[LF]
[LF]
第3行[LF]
[LF]


你能帮我解决这个问题吗?

你有其他的功能:而且,尽管我已经在本地测试了iconv,它可以工作,但我没有使用Windows

考虑到您在Windows上使用
type
生成PHP脚本输入,您应该检查活动控制台代码页,这可能会影响
type
命令的输出:

首先,通过将代码的第一行更改为以下内容,并查看发生的情况,尝试放弃iconv的问题:

$t_comment = "line 1 \r\nline 2 \r\nline 3 \r\n";

您可以使用其他功能:尽管我已经在本地测试了iconv,并且它可以正常工作,但我没有使用Windows

考虑到您在Windows上使用
type
生成PHP脚本输入,您应该检查活动控制台代码页,这可能会影响
type
命令的输出:

首先,通过将代码的第一行更改为以下内容,并查看发生的情况,尝试放弃iconv的问题:

$t_comment = "line 1 \r\nline 2 \r\nline 3 \r\n";

我发现生成新行是因为使用了double-pipe命令。所以我决定合并两个sript,使其只有一个管道

所以我改变了:

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


这解决了问题,但没有回答额外的换行符从何而来。

我发现新的换行符是由于double-pipe命令生成的。所以我决定合并两个sript,使其只有一个管道

所以我改变了:

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


这解决了问题,但没有回答额外的换行符从何而来。

您可以提供输入的hexdump吗?显示如何调用脚本/如何从脚本外部提供STDIN
cat myfile.txt | php myscript.php
?您是否尝试过
php myscript.php
?您使用的是哪个shell?@Kaii我必须使用windows批处理文件,我尝试了这两种语法,它没有改变任何东西。看起来,
iconv
确实有一种奇怪的行为……你能提供你输入的hexdump吗?展示你如何调用你的脚本/你如何从脚本外部提供STDIN
cat myfile.txt | php myscript.php
?您是否尝试过
php myscript.php
?您使用的是哪个shell?@Kaii我必须使用windows批处理文件,我尝试了这两种语法,它没有改变任何东西。看起来,
iconv
确实有一种奇怪的行为……好吧,我已经完全改变了答案。控制台代码页850默认情况下,我试图将其更改为863,但没有改变任何内容。问题似乎不是来自
iconv
,因为
echo
在不做任何更改的情况下加载输入文件会导致相同的问题。好的,我已经完全更改了答案。控制台代码页850默认情况下,我尝试将其更改为863,但没有更改任何内容。问题似乎不是来自
iconv
,因为
echo
在不做更改的情况下复制输入文件会导致相同的问题。
C:\> type myfile.txt | php.exe myscript1-merge2.php