-
Notifications
You must be signed in to change notification settings - Fork 223
Closed
Description
Although a recent pull request (#170) fixed encoding errors for Shift-JIS, generating QR codes in Kanji mode still presents issues with readability. For instance, attempting to generate a QR code using only Kanji characters results in an unreadable code.
For Kanji Mode example:
use BaconQrCode\Renderer\ImageRenderer;
use BaconQrCode\Renderer\Image\ImagickImageBackEnd;
use BaconQrCode\Renderer\RendererStyle\RendererStyle;
use BaconQrCode\Writer;
$renderer = new ImageRenderer(
new RendererStyle(400),
new ImagickImageBackEnd()
);
$writer = new Writer($renderer);
$writer->writeFile("あいうえお", "qrcode-alphanum.png", "SHIFT-JIS"); // Kanji Mode is usedGenerated QR code (unreadable)
However, by including alphanumeric characters and switching to Byte mode, a readable QR code can be generated.
For Byte Mode example:
use BaconQrCode\Renderer\ImageRenderer;
use BaconQrCode\Renderer\Image\ImagickImageBackEnd;
use BaconQrCode\Renderer\RendererStyle\RendererStyle;
use BaconQrCode\Writer;
$renderer = new ImageRenderer(
new RendererStyle(400),
new ImagickImageBackEnd()
);
$writer = new Writer($renderer);
$writer->writeFile("あいうえお123", "qrcode-alphanum.png", "SHIFT-JIS"); // Byte Mode is usedGenerated QR code (readable)
How to fix:
I think we should just simply use Byte Mode to generate Shift-JIS encoded QR Code by changing this code:
BaconQrCode/src/Encoder/Encoder.php
Lines 165 to 167 in c01758c
| if (null !== $encoding && 0 === strcasecmp($encoding, 'SHIFT-JIS')) { | |
| return self::isOnlyDoubleByteKanji($content) ? Mode::KANJI() : Mode::BYTE(); | |
| } |
to this:
if (null !== $encoding && 0 === strcasecmp($encoding, 'SHIFT-JIS')) {
return Mode::BYTE();
}Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels

