Skip to content

Commit 7060eed

Browse files
committed
fixed #88
1 parent 397013e commit 7060eed

File tree

3 files changed

+21
-4
lines changed

3 files changed

+21
-4
lines changed

src/XBase/Column/DBaseColumn.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
namespace XBase\Column;
44

55
use XBase\Enum\FieldType;
6-
use XBase\Record;
76
use XBase\Stream\Stream;
87

98
class DBaseColumn extends AbstractColumn
@@ -40,8 +39,11 @@ public static function create(string $memoryChunk, int $colIndex, ?int $bytePos
4039

4140
public function __construct(string $name, string $type, int $memAddress, int $length, int $decimalCount, $reserved1, int $workAreaID, $reserved2, bool $setFields, $reserved3, bool $indexed, int $colIndex, ?int $bytePos = null)
4241
{
42+
$name = (false !== strpos($name, chr(0x00))) ? substr($name, 0, strpos($name, chr(0x00))) : $name;
43+
4344
$this->rawName = $name;
44-
$this->name = strtolower(rtrim($name, chr(0x00)));
45+
// chop all garbage from 0x00
46+
$this->name = strtolower($name);
4547
$this->type = $type;
4648
$this->memAddress = $memAddress;
4749
$this->length = $length;

src/XBase/Table.php

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -417,8 +417,6 @@ public function getVersion()
417417

418418
/**
419419
* @see Codepage
420-
*
421-
* @return int
422420
*/
423421
public function getLanguageCode(): int
424422
{

tests/DbfTest.php

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
namespace XBase\Tests;
44

55
use XBase\Enum\TableType;
6+
use XBase\Record\DBaseRecord;
67
use XBase\Table;
78

89
class DbfTest extends AbstractTestCase
@@ -18,4 +19,20 @@ public function test2ByteHeaderTerminator(): void
1819
self::assertSame([1000, 'Банк ВТБ (ПАО)', 1, 1], array_values($table->nextRecord()->getData()));
1920
self::assertSame([990, 'ООО КБ "Дружба"', 1, 1], array_values($table->pickRecord(441)->getData()));
2021
}
22+
23+
public function testIssue88(): void
24+
{
25+
$table = new Table(__DIR__.'/Resources/dbf/cbrf_122019N1.dbf', null, 'cp866');
26+
/** @var DBaseRecord $record */
27+
$record = $table->nextRecord();
28+
self::assertSame(
29+
[
30+
'regn' => 1,
31+
'name_b' => 'АО ЮниКредит Банк',
32+
'priz' => 1,
33+
'priz_p' => 1,
34+
],
35+
$record->getData()
36+
);
37+
}
2138
}

0 commit comments

Comments
 (0)