diff --git a/src/DataConverter/Encoder/EncoderInterface.php b/src/DataConverter/Encoder/EncoderInterface.php
new file mode 100644
index 0000000..ce3b5f7
--- /dev/null
+++ b/src/DataConverter/Encoder/EncoderInterface.php
@@ -0,0 +1,8 @@
+table = $table;
$this->column = $column;
+ $this->encoder = $encoder;
}
}
diff --git a/src/DataConverter/Field/DBase/CharConverter.php b/src/DataConverter/Field/DBase/CharConverter.php
index e057bde..af320fc 100644
--- a/src/DataConverter/Field/DBase/CharConverter.php
+++ b/src/DataConverter/Field/DBase/CharConverter.php
@@ -15,7 +15,7 @@ public static function getType(): string
public function fromBinaryString(string $value)
{
if ($inCharset = $this->table->options['encoding']) {
- $value = iconv($inCharset, 'utf-8', $value);
+ $value = $this->encoder->encode($value, $inCharset, 'utf-8');
}
return trim($value);
@@ -24,7 +24,7 @@ public function fromBinaryString(string $value)
public function toBinaryString($value): string
{
if ($value && $outCharset = $this->table->options['encoding']) {
- $value = iconv('utf-8', $outCharset, $value);
+ $value = $this->encoder->encode($value, 'utf-8', $outCharset);
}
return str_pad($value ?? '', $this->column->length);
diff --git a/src/DataConverter/Field/VisualFoxpro/VarFieldConverter.php b/src/DataConverter/Field/VisualFoxpro/VarFieldConverter.php
index 716343f..afde00f 100644
--- a/src/DataConverter/Field/VisualFoxpro/VarFieldConverter.php
+++ b/src/DataConverter/Field/VisualFoxpro/VarFieldConverter.php
@@ -19,7 +19,7 @@ public function fromBinaryString(string $value): string
}
if ($inCharset = $this->table->options['encoding']) {
- $value = iconv($inCharset, 'utf-8', $value);
+ $value = $this->encoder->encode($value, $inCharset, 'utf-8');
}
return $value;
@@ -32,7 +32,7 @@ public function toBinaryString($value): string
{
$value = $value ?? '';
if ($outCharset = $this->table->options['encoding']) {
- $value = iconv('utf-8', $outCharset, $value);
+ $value = $this->encoder->encode($value, 'utf-8', $outCharset);
}
return str_pad($value, $this->column->length - 1, chr(0x00)).chr(0x03);
diff --git a/src/DataConverter/Record/DBaseDataConverter.php b/src/DataConverter/Record/DBaseDataConverter.php
index ba30813..fce9aae 100644
--- a/src/DataConverter/Record/DBaseDataConverter.php
+++ b/src/DataConverter/Record/DBaseDataConverter.php
@@ -2,6 +2,7 @@
namespace XBase\DataConverter\Record;
+use XBase\DataConverter\Encoder\EncoderInterface;
use XBase\DataConverter\Field\DBase\CharConverter;
use XBase\DataConverter\Field\DBase\DateConverter;
use XBase\DataConverter\Field\DBase\IgnoreConverter;
@@ -20,9 +21,13 @@ class DBaseDataConverter implements RecordDataConverterInterface
/** @var Table */
protected $table;
- public function __construct(Table $table)
+ /** @var EncoderInterface */
+ protected $encoder;
+
+ public function __construct(Table $table, EncoderInterface $encoder)
{
$this->table = $table;
+ $this->encoder = $encoder;
}
/**
@@ -80,7 +85,7 @@ private function findFieldConverter(Column $column): FieldDataConverterInterface
{
foreach (static::getFieldConverters() as $class) {
if ($column->type === $class::getType()) {
- return new $class($this->table, $column);
+ return new $class($this->table, $column, $this->encoder);
}
}
diff --git a/src/Memo/AbstractMemo.php b/src/Memo/AbstractMemo.php
index e7618d5..35724fe 100644
--- a/src/Memo/AbstractMemo.php
+++ b/src/Memo/AbstractMemo.php
@@ -2,6 +2,7 @@
namespace XBase\Memo;
+use XBase\DataConverter\Encoder\EncoderInterface;
use XBase\Stream\Stream;
use XBase\Table\Table;
@@ -16,12 +17,16 @@ abstract class AbstractMemo implements MemoInterface
/** @var string */
protected $filepath;
+ /** @var EncoderInterface */
+ protected $encoder;
+
/**
* @param string $filepath Path to memo file
*/
- public function __construct(Table $table, string $filepath)
+ public function __construct(Table $table, string $filepath, EncoderInterface $encoder)
{
$this->table = $table;
+ $this->encoder = $encoder;
$this->filepath = $filepath;
$this->open();
diff --git a/src/Memo/DBase3Memo.php b/src/Memo/DBase3Memo.php
index 1086513..24567d2 100644
--- a/src/Memo/DBase3Memo.php
+++ b/src/Memo/DBase3Memo.php
@@ -51,7 +51,7 @@ public function get(int $pointer): ?MemoObject
$result = substr($result, 0, -1); // remove endline symbol (0x00)
}
if ($this->table->options['encoding']) {
- $result = iconv($this->table->options['encoding'], 'utf-8', $result);
+ $result = $this->encoder->encode($result, $this->table->options['encoding'], 'utf-8');
}
}
diff --git a/src/Memo/DBase4Memo.php b/src/Memo/DBase4Memo.php
index 354c5eb..6e0086a 100644
--- a/src/Memo/DBase4Memo.php
+++ b/src/Memo/DBase4Memo.php
@@ -48,7 +48,7 @@ public function get(int $pointer): ?MemoObject
$info = $this->guessDataType($result);
assert(isset($info['type']));
if (MemoObject::TYPE_TEXT === $info['type'] && $this->table->options['encoding']) {
- $result = iconv($this->table->options['encoding'], 'utf-8', $result);
+ $result = $this->encoder->encode($result, $this->table->options['encoding'], 'utf-8');
}
return new MemoObject($result, $info['type'], $pointer, $memoLength[1]);
diff --git a/src/Memo/FoxproMemo.php b/src/Memo/FoxproMemo.php
index a865bf9..1c97ff7 100644
--- a/src/Memo/FoxproMemo.php
+++ b/src/Memo/FoxproMemo.php
@@ -56,7 +56,7 @@ public function get(int $pointer): ?MemoObject
$info = $this->guessDataType($result);
assert(isset($info['type']));
if ($this->table->options['encoding']) {
- $result = iconv($this->table->options['encoding'], 'utf-8', $result);
+ $result = $this->encoder->encode($result, $this->table->options['encoding'], 'utf-8');
}
return new MemoObject($result, $info['type'], $pointer, $memoLength[1], $info);
diff --git a/src/Memo/MemoFactory.php b/src/Memo/MemoFactory.php
index efe1262..66aef2e 100644
--- a/src/Memo/MemoFactory.php
+++ b/src/Memo/MemoFactory.php
@@ -2,12 +2,13 @@
namespace XBase\Memo;
+use XBase\DataConverter\Encoder\EncoderInterface;
use XBase\Enum\TableType;
use XBase\Table\Table;
class MemoFactory
{
- public static function create(Table $table): ?MemoInterface
+ public static function create(Table $table, EncoderInterface $encoder): ?MemoInterface
{
$class = self::getClass($table->getVersion());
$refClass = new \ReflectionClass($class);
@@ -26,7 +27,7 @@ public static function create(Table $table): ?MemoInterface
return null; //todo create file?
}
- return $refClass->newInstance($table, $memoFilepath);
+ return $refClass->newInstance($table, $memoFilepath, $encoder);
}
private static function getClass(int $version): string
diff --git a/src/Record/RecordFactory.php b/src/Record/RecordFactory.php
index 546d706..b24299b 100644
--- a/src/Record/RecordFactory.php
+++ b/src/Record/RecordFactory.php
@@ -2,6 +2,7 @@
namespace XBase\Record;
+use XBase\DataConverter\Encoder\EncoderInterface;
use XBase\DataConverter\Record\DBase4DataConverter;
use XBase\DataConverter\Record\DBase7DataConverter;
use XBase\DataConverter\Record\DBaseDataConverter;
@@ -13,8 +14,12 @@
class RecordFactory
{
- public static function create(Table $table, int $recordIndex, ?string $rawData = null): ?RecordInterface
- {
+ public static function create(
+ Table $table,
+ EncoderInterface $encoder,
+ int $recordIndex,
+ ?string $rawData = null
+ ): ?RecordInterface {
$class = self::getClass($table->getVersion());
$refClass = new \ReflectionClass($class);
if (!$refClass->implementsInterface(RecordInterface::class)) {
@@ -24,7 +29,7 @@ public static function create(Table $table, int $recordIndex, ?string $rawData =
return $refClass->newInstance(
$table,
$recordIndex,
- self::createDataConverter($table)->fromBinaryString($rawData ?? '')
+ self::createDataConverter($table, $encoder)->fromBinaryString($rawData ?? '')
);
}
@@ -56,28 +61,28 @@ public static function getClass(int $version): string
/**
* @return RecordDataConverterInterface
*/
- public static function createDataConverter(Table $table): RecordDataConverterInterface
+ public static function createDataConverter(Table $table, EncoderInterface $encoder): RecordDataConverterInterface
{
switch ($table->getVersion()) {
case TableType::DBASE_IV_MEMO:
- return new DBase4DataConverter($table);
+ return new DBase4DataConverter($table, $encoder);
case TableType::DBASE_7_NOMEMO:
case TableType::DBASE_7_MEMO:
- return new DBase7DataConverter($table);
+ return new DBase7DataConverter($table, $encoder);
case TableType::FOXPRO_MEMO:
- return new FoxproDataConverter($table);
+ return new FoxproDataConverter($table, $encoder);
case TableType::VISUAL_FOXPRO:
case TableType::VISUAL_FOXPRO_AI:
case TableType::VISUAL_FOXPRO_VAR:
- return new VisualFoxproDataConverter($table);
+ return new VisualFoxproDataConverter($table, $encoder);
case TableType::DBASE_III_PLUS_MEMO:
case TableType::DBASE_III_PLUS_NOMEMO:
default:
- return new DBaseDataConverter($table);
+ return new DBaseDataConverter($table, $encoder);
}
}
}
diff --git a/src/TableCreator.php b/src/TableCreator.php
index 63bd967..02b8b2e 100644
--- a/src/TableCreator.php
+++ b/src/TableCreator.php
@@ -2,6 +2,8 @@
namespace XBase;
+use XBase\DataConverter\Encoder\EncoderInterface;
+use XBase\DataConverter\Encoder\IconvEncoder;
use XBase\Enum\TableType;
use XBase\Exception\ColumnException;
use XBase\Exception\XBaseException;
@@ -20,7 +22,10 @@ class TableCreator
{
use TableAwareTrait;
- public function __construct(string $filepath, Header $header)
+ /** @var EncoderInterface */
+ protected $encoder;
+
+ public function __construct(string $filepath, Header $header, EncoderInterface $encoder = null)
{
$this->checkFilepath($filepath);
$this->checkHeader($header);
@@ -29,6 +34,7 @@ public function __construct(string $filepath, Header $header)
$this->table->filepath = $filepath;
$this->table->header = $header;
$this->table->options['create'] = true;
+ $this->encoder = $encoder ?? new IconvEncoder();
}
private function checkFilepath(string $filepath): void
@@ -70,7 +76,7 @@ public function save(): self
if (TableType::hasMemo($version = $this->getHeader()->version)) {
MemoCreatorFactory::create($this->table)->createFile();
- $this->table->memo = MemoFactory::create($this->table);
+ $this->table->memo = MemoFactory::create($this->table, $this->encoder);
}
$this->table->stream->close();
diff --git a/src/TableEditor.php b/src/TableEditor.php
index 66030db..ce5205f 100644
--- a/src/TableEditor.php
+++ b/src/TableEditor.php
@@ -92,7 +92,7 @@ public function close(): void
public function appendRecord(): RecordInterface
{
$this->recordPos = $this->getHeader()->recordCount;
- $this->record = RecordFactory::create($this->table, $this->recordPos);
+ $this->record = RecordFactory::create($this->table, $this->encoder, $this->recordPos);
$this->insertion = true;
return $this->record;
@@ -107,7 +107,8 @@ public function writeRecord(RecordInterface $record = null): self
$offset = $this->getHeader()->length + ($record->getRecordIndex() * $this->getHeader()->recordByteLength);
$this->getStream()->seek($offset);
- $this->getStream()->write(RecordFactory::createDataConverter($this->table)->toBinaryString($record));
+ $this->getStream()->write(RecordFactory::createDataConverter($this->table, $this->encoder)
+ ->toBinaryString($record));
if ($this->insertion) {
$this->table->header->recordCount++;
diff --git a/src/TableReader.php b/src/TableReader.php
index 401d0e5..41c70ed 100644
--- a/src/TableReader.php
+++ b/src/TableReader.php
@@ -4,6 +4,8 @@
use XBase\Column\ColumnInterface;
use XBase\Column\XBaseColumn;
+use XBase\DataConverter\Encoder\EncoderInterface;
+use XBase\DataConverter\Encoder\IconvEncoder;
use XBase\Enum\Codepage;
use XBase\Enum\TableType;
use XBase\Exception\TableException;
@@ -36,6 +38,9 @@ class TableReader
/** @var RecordInterface|null */
protected $record;
+ /** @var EncoderInterface */
+ protected $encoder;
+
/**
* @var Table
*/
@@ -47,6 +52,7 @@ class TableReader
* @param array $options Array of options:
* encoding - convert text data from
* columns - available columns
+ * encoder - encoder class name, default: IconvEncoder::class
*
* @throws \Exception
*/
@@ -55,6 +61,9 @@ public function __construct(string $filepath, array $options = [])
$this->table = new Table();
$this->table->filepath = $filepath;
+ $this->encoder = isset($options['encoder']) && $options['encoder'] instanceof EncoderInterface ?
+ $options['encoder'] :
+ new IconvEncoder();
$this->table->options = $this->resolveOptions($options);
$this->open();
@@ -96,7 +105,7 @@ protected function readHeader(): void
protected function openMemo(): void
{
if (TableType::hasMemo($this->getVersion())) {
- $this->table->memo = MemoFactory::create($this->table);
+ $this->table->memo = MemoFactory::create($this->table, $this->encoder);
}
}
@@ -137,7 +146,7 @@ public function nextRecord(): ?RecordInterface
}
$this->recordPos++;
- $this->record = RecordFactory::create($this->table, $this->recordPos, $this->getStream()
+ $this->record = RecordFactory::create($this->table, $this->encoder, $this->recordPos, $this->getStream()
->read($this->getHeader()->recordByteLength));
if ($this->record->isDeleted()) {
@@ -167,7 +176,7 @@ public function pickRecord(int $position): ?RecordInterface
throw new TableException("Failed to pick row at position {$position}");
}
- $record = RecordFactory::create($this->table, $position, $this->getStream()
+ $record = RecordFactory::create($this->table, $this->encoder, $position, $this->getStream()
->read($this->getHeader()->recordByteLength));
// revert pointer
$this->getStream()->seek($curPos);
@@ -197,7 +206,12 @@ public function previousRecord(): ?RecordInterface
$this->getStream()->seek($this->getHeader()->length + ($this->recordPos * $this->getHeader()->recordByteLength));
- $this->record = RecordFactory::create($this->table, $this->recordPos, $this->getStream()->read($this->getRecordByteLength()));
+ $this->record = RecordFactory::create(
+ $this->table,
+ $this->encoder,
+ $this->recordPos,
+ $this->getStream()->read($this->getRecordByteLength())
+ );
if ($this->record->isDeleted()) {
$this->deleteCount++;
@@ -219,7 +233,7 @@ public function moveTo(int $index): ?RecordInterface
$this->getStream()->seek($this->getHeader()->length + ($index * $this->getHeader()->recordByteLength));
- $this->record = RecordFactory::create($this->table, $this->recordPos, $this->getStream()
+ $this->record = RecordFactory::create($this->table, $this->encoder, $this->recordPos, $this->getStream()
->read($this->getHeader()->recordByteLength));
return $this->record;
diff --git a/tests/DataConverter/Field/DBase/NumberConverterTest.php b/tests/DataConverter/Field/DBase/NumberConverterTest.php
index c6b3236..e662dc4 100644
--- a/tests/DataConverter/Field/DBase/NumberConverterTest.php
+++ b/tests/DataConverter/Field/DBase/NumberConverterTest.php
@@ -3,6 +3,7 @@
namespace XBase\Tests\DataConverter\Field\DBase;
use PHPUnit\Framework\TestCase;
+use XBase\DataConverter\Encoder\IconvEncoder;
use XBase\DataConverter\Field\DBase\NumberConverter;
use XBase\Header\Column;
use XBase\Table\Table;
@@ -29,7 +30,7 @@ public function testRightDecimalCount(int $length, int $decimalCount, $in, strin
$column->length = $length;
$column->decimalCount = $decimalCount;
- $fieldConverter = new NumberConverter($table, $column);
+ $fieldConverter = new NumberConverter($table, $column, new IconvEncoder());
self::assertSame($out, $fieldConverter->toBinaryString($in));
}
diff --git a/tests/DataConverter/Field/DBase7/DoubleConverterTest.php b/tests/DataConverter/Field/DBase7/DoubleConverterTest.php
index 877edb6..e2cc531 100644
--- a/tests/DataConverter/Field/DBase7/DoubleConverterTest.php
+++ b/tests/DataConverter/Field/DBase7/DoubleConverterTest.php
@@ -3,6 +3,7 @@
namespace XBase\Tests\Record\DataConverter\Field\DBase7;
use PHPUnit\Framework\TestCase;
+use XBase\DataConverter\Encoder\IconvEncoder;
use XBase\DataConverter\Field\DBase7\DoubleConverter;
use XBase\Header\Column;
use XBase\Table\Table;
@@ -16,7 +17,7 @@ public function test(string $binaryString, float $float): void
{
$table = new Table();
$column = new Column();
- $converter = new DoubleConverter($table, $column);
+ $converter = new DoubleConverter($table, $column, new IconvEncoder());
self::assertSame($float, $converter->fromBinaryString($binaryString));
self::assertEquals($float, unpack('E', $converter->toBinaryString($float))[1]);
}
diff --git a/tests/DataConverter/Field/DBase7/IntegerConverterTest.php b/tests/DataConverter/Field/DBase7/IntegerConverterTest.php
index 3fb7b12..ecaec62 100644
--- a/tests/DataConverter/Field/DBase7/IntegerConverterTest.php
+++ b/tests/DataConverter/Field/DBase7/IntegerConverterTest.php
@@ -3,6 +3,7 @@
namespace XBase\Tests\Record\DataConverter\Field\DBase7;
use PHPUnit\Framework\TestCase;
+use XBase\DataConverter\Encoder\IconvEncoder;
use XBase\DataConverter\Field\DBase7\IntegerConverter;
use XBase\Header\Column;
use XBase\Table\Table;
@@ -16,7 +17,7 @@ public function test(string $binaryString, int $int): void
{
$table = new Table();
$column = new Column();
- $converter = new IntegerConverter($table, $column);
+ $converter = new IntegerConverter($table, $column, new IconvEncoder());
self::assertSame($int, $converter->fromBinaryString($binaryString));
self::assertEquals(unpack('C*', $binaryString), unpack('C*', $converter->toBinaryString($int)));
}
diff --git a/tests/DataConverter/Field/DBase7/TimestampConverterTest.php b/tests/DataConverter/Field/DBase7/TimestampConverterTest.php
index c752501..d8c335c 100644
--- a/tests/DataConverter/Field/DBase7/TimestampConverterTest.php
+++ b/tests/DataConverter/Field/DBase7/TimestampConverterTest.php
@@ -3,6 +3,7 @@
namespace XBase\Tests\Record\DataConverter\Field\DBase7;
use PHPUnit\Framework\TestCase;
+use XBase\DataConverter\Encoder\IconvEncoder;
use XBase\DataConverter\Field\DBase7\TimestampConverter;
use XBase\Header\Column;
use XBase\Table\Table;
@@ -21,7 +22,7 @@ public function test(string $binaryString, int $int): void
{
$table = new Table();
$column = new Column();
- $converter = new TimestampConverter($table, $column);
+ $converter = new TimestampConverter($table, $column, new IconvEncoder());
self::assertSame($int, $converter->fromBinaryString($binaryString));
self::assertEquals(base64_encode($binaryString), base64_encode($converter->toBinaryString($int)));
}
diff --git a/tests/DataConverter/Field/VisualFoxpro/DateTimeConverterTest.php b/tests/DataConverter/Field/VisualFoxpro/DateTimeConverterTest.php
index 36c75b2..29e4333 100644
--- a/tests/DataConverter/Field/VisualFoxpro/DateTimeConverterTest.php
+++ b/tests/DataConverter/Field/VisualFoxpro/DateTimeConverterTest.php
@@ -3,6 +3,7 @@
namespace XBase\Tests\Record\DataConverter\Field\VisualFoxpro;
use PHPUnit\Framework\TestCase;
+use XBase\DataConverter\Encoder\IconvEncoder;
use XBase\DataConverter\Field\VisualFoxpro\DateTimeConverter;
use XBase\Header\Column;
use XBase\Table\Table;
@@ -24,7 +25,7 @@ public function test(string $dtSting): void
$table = new Table();
$column = new Column();
- $converter = new DateTimeConverter($table, $column);
+ $converter = new DateTimeConverter($table, $column, new IconvEncoder());
$binaryString = $converter->toBinaryString(\DateTime::createFromFormat('Y-m-d\TH:i:s.uP', $dtSting));
$dt = $converter->fromBinaryString($binaryString);
self::assertInstanceOf(\DateTimeInterface::class, $dt);
@@ -50,7 +51,7 @@ public function testFromBinaryStringNull(string $base64Value): void
{
$table = new Table();
$column = new Column();
- $converter = new DateTimeConverter($table, $column);
+ $converter = new DateTimeConverter($table, $column, new IconvEncoder());
self::assertNull($converter->fromBinaryString(base64_decode($base64Value)));
}
diff --git a/tests/DataConverter/Record/DBase7DataConverterTest.php b/tests/DataConverter/Record/DBase7DataConverterTest.php
index bcd09bb..dfb205b 100644
--- a/tests/DataConverter/Record/DBase7DataConverterTest.php
+++ b/tests/DataConverter/Record/DBase7DataConverterTest.php
@@ -3,6 +3,7 @@
namespace XBase\Tests\DataConverter\Record;
use PHPUnit\Framework\TestCase;
+use XBase\DataConverter\Encoder\IconvEncoder;
use XBase\DataConverter\Record\DBase7DataConverter;
use XBase\Enum\FieldType;
use XBase\Enum\TableType;
@@ -107,7 +108,7 @@ public function test(string $rawData): void
$table->header->columns = $columns;
$table->header->recordByteLength = 126;
- $converter = new DBase7DataConverter($table);
+ $converter = new DBase7DataConverter($table, new IconvEncoder());
$array = $converter->fromBinaryString($rawData);
$binaryString = $converter->toBinaryString(new DBase7Record($table, 1, $array));
self::assertSame($rawData, $binaryString);
diff --git a/tests/DataConverter/Record/DBaseDataConverterTest.php b/tests/DataConverter/Record/DBaseDataConverterTest.php
index 9feef6d..4372227 100644
--- a/tests/DataConverter/Record/DBaseDataConverterTest.php
+++ b/tests/DataConverter/Record/DBaseDataConverterTest.php
@@ -3,6 +3,7 @@
namespace XBase\Tests\DataConverter\Record;
use PHPUnit\Framework\TestCase;
+use XBase\DataConverter\Encoder\IconvEncoder;
use XBase\DataConverter\Record\DBaseDataConverter;
use XBase\Enum\FieldType;
use XBase\Enum\TableType;
@@ -69,7 +70,7 @@ public function testFromBinaryString(): void
$table->header->columns = $columns;
$table->header->recordByteLength = 70;
- $converter = new DBaseDataConverter($table);
+ $converter = new DBaseDataConverter($table, new IconvEncoder());
$rawData = base64_decode($base64RowData);
$array = $converter->fromBinaryString($rawData);
self::assertNotEmpty($array);
diff --git a/tests/DataConverter/Record/DBaseRecordTest.php b/tests/DataConverter/Record/DBaseRecordTest.php
index 3ca2f4b..81928a8 100644
--- a/tests/DataConverter/Record/DBaseRecordTest.php
+++ b/tests/DataConverter/Record/DBaseRecordTest.php
@@ -3,6 +3,7 @@
namespace XBase\Tests\Record;
use PHPUnit\Framework\TestCase;
+use XBase\DataConverter\Encoder\IconvEncoder;
use XBase\DataConverter\Record\DBaseDataConverter;
use XBase\Enum\FieldType;
use XBase\Enum\TableType;
@@ -88,7 +89,7 @@ public function testCopyFrom(): void
$table->header->recordByteLength = 70;
$table->memo = $memo;
- $converter = new DBaseDataConverter($table);
+ $converter = new DBaseDataConverter($table, new IconvEncoder());
$record1 = new DBaseRecord($table, 1, $converter->fromBinaryString(''));
$record1
diff --git a/tests/DataConverter/Record/FoxproDataConverterTest.php b/tests/DataConverter/Record/FoxproDataConverterTest.php
index 0f071ed..5e38ccb 100644
--- a/tests/DataConverter/Record/FoxproDataConverterTest.php
+++ b/tests/DataConverter/Record/FoxproDataConverterTest.php
@@ -3,6 +3,7 @@
namespace XBase\Tests\DataConverter\Record;
use PHPUnit\Framework\TestCase;
+use XBase\DataConverter\Encoder\IconvEncoder;
use XBase\DataConverter\Record\FoxproDataConverter;
use XBase\Enum\FieldType;
use XBase\Enum\TableType;
@@ -83,7 +84,7 @@ public function test(string $rawData): void
$table->header->columns = $columns;
$table->header->recordByteLength = 90;
- $converter = new FoxproDataConverter($table);
+ $converter = new FoxproDataConverter($table, new IconvEncoder());
$array = $converter->fromBinaryString($rawData);
$binaryString = $converter->toBinaryString(new FoxproRecord($table, 1, $array));
self::assertSame($rawData, $binaryString);
diff --git a/tests/DataConverter/Record/VisualFoxproDataConverterTest.php b/tests/DataConverter/Record/VisualFoxproDataConverterTest.php
index 89c0495..f6e644c 100644
--- a/tests/DataConverter/Record/VisualFoxproDataConverterTest.php
+++ b/tests/DataConverter/Record/VisualFoxproDataConverterTest.php
@@ -3,6 +3,7 @@
namespace XBase\Tests\DataConverter\Record;
use PHPUnit\Framework\TestCase;
+use XBase\DataConverter\Encoder\IconvEncoder;
use XBase\DataConverter\Record\VisualFoxproDataConverter;
use XBase\Enum\FieldType;
use XBase\Header\Column;
@@ -154,7 +155,7 @@ public function test(string $rawData): void
$table->header->columns = $columns;
$table->header->recordByteLength = 164;
- $converter = new VisualFoxproDataConverter($table);
+ $converter = new VisualFoxproDataConverter($table, new IconvEncoder());
$array = $converter->fromBinaryString($rawData);
$binaryString = $converter->toBinaryString(new VisualFoxproRecord($table, 1, $array));
self::assertSame($rawData, $binaryString);