首页 > 解决方案 > 从 .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 会触发垃圾邮件标志:

https://pastebin.com/p3xxwvh2

请注意,在这种特殊情况下,两个变量都应该包含相同的字符串。

另外,我注意到如果我以相反的顺序($headers第一个和$results第二个)回显变量,结果是不同的,$headers产生正确的字符串并且$result几乎做同样的事情,但中间有几个 � 字符。

我已经检查过这是否是 .php 文件本身的编码问题,但似乎并非如此(UTF-8)。

标签: php

解决方案


我已经检查过这是否是 .php 文件本身的编码问题,但似乎并非如此(UTF-8)。

您从中读取数据的文本文件的编码也是相关的。

这里似乎不是 UTF-8 的东西 - 所以你将在读取数据后首先将数据转换为 UTF-8,然后才能将其与 UTF-8 中的变量值进行比较(因为这些值来自代码,并且保存在 UTF-8 中),或者在将其作为 UTF-8 编码响应的一部分输出之前将给出可用的结果。


推荐阅读