Импорт txt файла с fopen на PHP приносит пробел между буквами - PullRequest
0 голосов
/ 08 января 2020

Я импортирую и читаю TXT-файл с PHP, используя fopen. Но между каждой буквой в файле TXT появляется один странный символ, и я попытался найти здесь некоторые решения, но я не смог найти.

Вот мой код:

<?php
mysqli_query($sConn,"DELETE FROM cnpjPrincipal");
$myfile = fopen("Arquivos/1.txt", "r") or die("Unable to open file!");
$nLine = 0;
//*************************************************************************************//
while(!feof($myfile)&&$nLine<5){
    $sLine = fgets($myfile);
    if(substr($sLine, 1, 1)=="1"){
        $nLine += 1;
        echo "Position 1:   '".fCutString($sLine, 0, 1)."' <br/>";
        echo "Position 2:   '".fCutString($sLine, 1, 1)."' <br/>";
        echo "Position 3:   '".fCutString($sLine, 2, 1)."' <br/>";
        echo "Position 4:   '".fCutString($sLine, 3, 14)."' <br/>";
        echo "Position 18:  '".fCutString($sLine, 17, 1)."' <br/>";
        echo "Position 19:  '".fCutString($sLine, 18, 150)."' <br/>";
        echo "Position 169: '".fCutString($sLine, 168, 55)."'<br /><br />";
        echo $sLine."<br /><br />";
        echo mb_detect_encoding($sLine)."<br /><br />";
    }
}
//*************************************************************************************//
fclose($myfile);
//*************************************************************************************//
function fCutString($sString, $nStart, $nEnd){
    return substr($sString, $nStart, $nEnd);
};
?>

Затем я попытался используйте:

<?php
// Solution 1
$sLine = mb_convert_encoding(fgets($myfile),mb_detect_encoding(fgets($myfile, mb_detect_order(), true)),"UTF-8");
// Solution 2
$sLine = iconv(mb_detect_encoding(fgets($myfile), mb_detect_order(), true), "UTF-8", fgets($myfile));
// Solution 3
$sLine = utf8_encode(fgets($myfile));
?> 

Но любое решение работало. Вкл. HTML приносит:

Position 1: ''
Position 2: '1'
Position 3: ''
Position 4: 'F 01772'
Position 18: '2'
Position 19: '210001401ALEXANDRE TABORDA GOULART '
Position 169: ' '

Full Line: 1F 017722210001401ALEXANDRE TABORDA GOULART 042019032263 2135199704155819100AVENIDA DR CARLOS BARBOSA 233 ANDAR 1 AZENHA 90880001RS8801PORTO ALEGRE 51 34444882 50000000000000000182007070120161231N F

ASCII

Когда я открываю сгенерированный HTML, откройте так: HTML

Я поставил функцию, чтобы сообщить кодировка, которая показывает мне, что это ASCII. Я получаю файл от правительства, и я пытаюсь разделить информацию по позициям, но поскольку у меня есть странные символы между буквами, они дают мне неверную информацию. Файл TXT поставляется как UNICODE. Кто-то уже пытался что-то исправить? Заранее спасибо!

...