SED和UTF-8编码

4
在SSH(Putty)中,我使用一个命令来替换一个以UTF-8编码的文件中的一些文本。
例如:
cd ~/public_html/app/Config; sed -i 's/ADDRESS_SSH/l'adresse à été correctement intégréé/g' param.php;
在文件中一切正常,但在浏览器中显示时,重音符号很奇怪。当检查param.php文件时,我发现它的编码从UTF-8更改为欧洲西部。
.xml文件也有同样的问题。
请帮忙使用sed而不更改编码,或者添加另一条ssh命令,将php和xml文件重新编码为UTF-8?
最好的问候和谢意。

1
sed 命令必须以 UTF-8 编码。最简单的方法是将命令放入一个文件中,确保该文件是 utf-8 编码,然后将该文件作为脚本执行。 - that other guy
你好,谢谢。 这个不能在像 Putty 这样的终端中实现吗?我必须使用它。 - amorino
1
您可以按照Putty中的描述创建、验证和运行文件。如果您想直接从Putty中的交互式shell发出命令,您必须配置Putty和您的shell以使用UTF-8。 - that other guy
非常感谢您。这是在putty的设置中,现在一切都正常了。请回复,我会将其选为最佳答案 ;) - amorino
它是在Putty配置中 ==> 翻译 ==> 接收到的数据假定是哪种字符集 ==> 选择UTF-8。此致敬礼。 - amorino
2个回答

9

您必须确保所发出的 sed 命令是 UTF-8 编码。

您可以通过以下两种方式之一实现:

  1. 将 sed 命令写入文件,确保文件为 UTF-8 编码,并将其作为脚本执行:

    file 您的文件名 应该显示 UTF-8 Unicode text

    然后您可以运行 bash 您的文件名

  2. 或者,更改终端和 shell 设置为 UTF-8

    printf à | wc -c 必须显示 2,而不是 1。

    locale 应该在 LC_CTYPE 行中列出 "UTF-8" 或 "utf8"。

    然后您可以直接从终端提示符运行 sed 命令。


-2

这是在Putty配置==>翻译==>接收到的数据假定为哪个字符集==>选择UTF-8 最好的祝福


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接