php - 从 .txt 文件中提取数据产生汉字
问题描述
我正在从提交的 .txt 文件中获取数据,fopen
因此我可以将其与包含一行标题的硬编码字符串进行比较,以进行验证。
即使满足条件,验证也会失败。我回显了这两个变量以查看问题所在,并发现其中一个 ( $headers
) 输出的是中文字符而不是预期的字符串。
代码:
$fn = fopen($_FILES["polizas"]["tmp_name"], "r");
$result = fgets($fn);
$headers = "seccion;propuesta;poliza;endoso;tipo endoso;desc tipo endoso;pol que renueva;iva;tipo doc;nro doc;apellido;domicilio;cod postal;telefono;localidad;provincia;fecha emision;fecha inicio;fecha vcto;canal pago;desc canal pago;origen;productor;organizador;moneda;item;marca;modelo;cero Km;motor;chasis;patente;tipo carroceria;desc tipo carroceria;cobertura;desc cobertura;cod acc1;desc acc1;valor acc1;cod acc2;desc acc2;valor acc2;cod acc3;desc acc3;valor acc3;cod acc4;desc acc4;valor acc4;suma aseg;prima;recarg;der emision;sellos;imp tasas;otrod;bonif;iva;adminis financ;premio;cant cuotas;ajuste;tipo vehiculo;desc tipo vehiculo;codigo uso;descripcion uso;año fab;nro prestamo;vcto cuota1;vcto prestamo;tipo prestamo;tipo operacion;seccion pol.paquete; poliza pol.paquete;";
echo $headers;
echo $result;
这是两个变量的输出,存储在 pastebin 中,因为如果我在此处添加 SO 会触发垃圾邮件标志:
请注意,在这种特殊情况下,两个变量都应该包含相同的字符串。
另外,我注意到如果我以相反的顺序($headers
第一个和$results
第二个)回显变量,结果是不同的,$headers
产生正确的字符串并且$result
几乎做同样的事情,但中间有几个 � 字符。
我已经检查过这是否是 .php 文件本身的编码问题,但似乎并非如此(UTF-8)。
解决方案
我已经检查过这是否是 .php 文件本身的编码问题,但似乎并非如此(UTF-8)。
您从中读取数据的文本文件的编码也是相关的。
这里似乎不是 UTF-8 的东西 - 所以你将在读取数据后首先将数据转换为 UTF-8,然后才能将其与 UTF-8 中的变量值进行比较(因为这些值来自代码,并且保存在 UTF-8 中),或者在将其作为 UTF-8 编码响应的一部分输出之前将给出可用的结果。
推荐阅读
- android - Android7ff:如何为每个 Android-filemanager 可以使用的新文件扩展名注册新的 mimetype?
- javascript - 使用 TamperMonkey 脚本在本机 Chrome HTML5 播放器上暂停视频
- python - Python VS MATLAB 中的 Trapz 集成函数:“操作数无法与形状一起广播”
- svg - 继承的 SVG 功能组件不能添加样式 styled-components
- windows - 如何更改鼠标单击的这种行为
- reactjs - 隐藏显示组件并使用反应滚动突出显示链接
- python - 如何在 python 中定义正确的模式/表达式?
- arrays - 填充作为参数传递给函数的数组时遇到问题
- python - 为什么我收到 Flask 服务器内部错误?
- asynchronous - 如何在非同步回调中使用异步移动闭包?