php - PHP iconv 从 utf-8 到 windows-1252,没有特殊字符
问题描述
我正在尝试对这样的文件内容进行编码:
$f_file = fopen("dreams.txt", "w");
$string = "Los sueños se cumplen.";
$string_encoded = iconv( mb_detect_encoding( $string ), 'Windows-1252//TRANSLIT', $string );
fwrite($f_file, $string_encoded);
fclose($f_file);
如果$string包含特殊字符,例如“ñ”或“á”,则文件将保存为 Windows-1252 编码,但如果$string不包含它们,则文件将被编码为 UTF-8。我需要使用 Windows-1252 编码的文件。
我究竟做错了什么?
解决方案
ASCII、ANSI (ISO-8859-1)、Windows-1252 和 UTF8 中使用的前 127 个字符都是相同的,因此仅通过查看仅包含其中字符的文档就无法判断“该”编码是什么设置:它们都同样适用。
现代编辑器会看到这一点并说“现在是 2018 年,所以我要告诉你它是 UTF8”,他们甚至不会错:在添加这些特殊字符之前,所有这些编码方案都是可以互换的。直到您引入更高的字节码字符,您才必须再次明确编码应该是什么。
推荐阅读
- azure-logic-apps - 如何将数组从 ADF 的 Web Activity 发送到 Logic App Webhook?
- python - 试图在熊猫中使用变换,但它给了我一些错误
- database - 用于 url 和相关关键字的 DynamoDB 数据模型
- css - 位置绝对 div 在离开其父容器并进入另一个容器后隐藏
- python - 在 Python 中绘制多类别数据
- javascript - 显示每行项目 3 的列表并在点击时选择项目 - Vue.js
- png - 使用官员和 PNG 修复图形错误?
- amazon-elastic-beanstalk - 在 AWS Linux2 上安装 Letsencrypt 的正确方法是什么?
- stream - cuda 与 cupy 和 tensorRT 的流同步问题
- python - 从多个 numpy 数组创建 xarray - 时间序列