使用PHP更改文件编码会生成换行符
我使用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
$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吗?展示你如何调用你的脚本/你如何从脚本外部提供STDINcat 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