Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

漢字モードで簡体字の文字セットGB2312に対応してほしい #2

Closed
jason-cpc opened this issue Jan 19, 2021 · 15 comments

Comments

@jason-cpc
Copy link

こんにちは、あなたのツールは素晴らしいです、ありがとう!
残念ながら、使用中に中国語が認識できないことがわかりましたが、中国語を認識できるバージョンを提供していただけますか?
私は中国から来ました、私の電子メール:ahn.chen@foxmail.com。(Translated by google)

你好,你的工具非常优秀,感谢!
遗憾的是,我在使用过程中发现汉字无法识别,你能提供能识别汉字的版本吗?
我来自中国,我的E-mail:ahn.chen@foxmail.com

@yas78
Copy link
Owner

yas78 commented Jan 19, 2021

jason-cpcさん
文字セットは GB2312(簡体字中国語)ですか?
QRコードの規格上、実装は可能だと思うのでやってみます。
ただし私は簡体字に対応したQRコードリーダーを持っていないので、動作確認はお願いします。

@jason-cpc
Copy link
Author

yas78さん、お返事をいただけて光栄です!
私はプロのプログラマーではありませんが、VBAについては少し知識があります。 現在、QRコードを生成するVBAコードを個人のプロジェクトに移植しようとしていますが、あなたのコードが非常に適しているようです。 しかし、軟膏のハエは、コードが現在、文字セットGB2312(簡略化された中国語)の中国語の文字を認識できないことです。 あなたがそれを改善できることを願っています。
再度、感謝します。(Thanks google translator^_^)

yas78先生,能够得到你的回复,我感到非常荣幸!
我不是一名专业的程序员,只是略懂VBA。我现在试着移植一个生成二维码的VBA代码到我的个人项目里,发现你的代码似乎非常合适。但是美中不足的是,代码目前无法识别字符集GB2312(简体中文)的汉字。希望你能改善它。
再次表示感谢。

@yas78 yas78 changed the title 漢字が認識できない 漢字モードで簡体字の文字セットGB2312に対応してほしい Jan 22, 2021
@yas78
Copy link
Owner

yas78 commented Jan 26, 2021

@jason-cpc
漢字モードの文字セットを指定可能にしました。
cjk-support ブランチにコミットしたのでテストをお願いします。
次のように CreateSymbols関数のcharsetName引数に "GB2312" を設定すると、漢字モードで GB2312 が使用可能になります。

Dim sbls As Symbols
Set sbls = CreateSymbols(charsetName:="GB2312")

以下の文字で、作成・読み取りに問題がないか教えてください。

8140丂丄丅丆丏丒丗丟丠両丣並丩丮丯丱
9FF0燄燅燆燇燈燉燊燋燌燍燏燐燑燒燓
A040燖燗燘燙燚燛燜燝燞營燡燢燣燤燦燨
DFF0唣唏唑唧唪啧喏喵啉啭啁啕唿啐唼
E040郂郃郆郈郉郋郌郍郒郔郕郖郘郙郚郞
EBB0氚氡氩氤氪氲攵敕敫牍牒牖爰虢刖肟
EBC0肜肓肼朊肽肱肫肭肴肷胧胨胩胪胛胂

@jason-cpc
Copy link
Author

jason-cpc commented Jan 27, 2021

@yas78さん
すべての「Shift_JIS」を「GB2312」に置き換えました。テスト結果は次のとおりです。

1.純粋な漢字または漢字で始まる文字列を入力すると、生成されたQRコードが間違っており、読み取ることができません。

2.英語または数字で始まる文字列を入力する場合、
2.1一般的に使用される漢字の場合、正常に認識できます。
2.2以下の文字列について、テスト結果は右側に示されています

入力文字列 試験結果
………………………………………………………………………………………………………………………………………………………………
8140丂丄丅丆丏丒丗丟丠両丣並丩丮丯丱 エラー、として認識:
8140 、。,.・:;?!゛゜´`¨^
9FF0燄燅燆燇燈燉燊燋燌燍燏燐燑燒燓 エラー、判読不能
A040燖燗燘燙燚燛燜燝燞營燡燢燣燤燦燨 成功
DFF0唣唏唑唧唪啧喏喵啉啭啁啕唿啐唼 エラー、文字化けとして認識:
DFF0�����������������������
E040郂郃郆郈郉郋郌郍郒郔郕郖郘郙郚郞 エラー、として認識:
E040觡觠觢觜触詶誆詿詡訿詷誂誄詵誃誁
EBB0氚氡氩氤氪氲攵敕敫牍牒牖爰虢刖肟 成功
EBC0肜肓肼朊肽肱肫肭肴肷胧胨胩胪胛胂 成功

@yas78先生
我把所有「"Shift_JIS"」替换成了「"GB2312"」,测试结果如下:

  1. 当输入纯汉字或以汉字开头的字符串时,生成的二维码错误,无法读取;

  2. 当输入以英文或数字开头的字符串时,
    2.1 对于常用的汉字,可以识别成功;
    2.2 对于如下字符串,测试结果在右侧给出

输入的字符串 测试结果
………………………………………………………………………………………………………………………………………………………………
8140丂丄丅丆丏丒丗丟丠両丣並丩丮丯丱 错误,识别为:
8140 、。,.・:;?!゛゜´`¨^
9FF0燄燅燆燇燈燉燊燋燌燍燏燐燑燒燓 错误,无法读取
A040燖燗燘燙燚燛燜燝燞營燡燢燣燤燦燨 成功
DFF0唣唏唑唧唪啧喏喵啉啭啁啕唿啐唼 错误,识别为乱码:
DFF0�����������������������
E040郂郃郆郈郉郋郌郍郒郔郕郖郘郙郚郞 错误,识别为其他汉字:
E040觡觠觢觜触詶誆詿詡訿詷誂誄詵誃誁
EBB0氚氡氩氤氪氲攵敕敫牍牒牖爰虢刖肟 成功
EBC0肜肓肼朊肽肱肫肭肴肷胧胨胩胪胛胂 成功

@yas78
Copy link
Owner

yas78 commented Jan 27, 2021

@jason-cpc さん
ご確認いただきありがとうございます。

>すべての「Shift_JIS」を「GB2312」に置き換えました。
>我把所有「"Shift_JIS"」替换成了「"GB2312"」
とは、どの様な操作のことでしょうか。何も置き換える必要は無いはずなので気になりました。

漢字は文字コードの範囲により「漢字モード」と「8ビットバイトモード」の2つのモードを切り替えてエンコードされるのですが、テスト結果を見たところ、あなたが使用しているQRコードリーダーは漢字モードでエンコードされたデータをShift_JISコードとしてデコードしているようです。何故なら「8140丂丄丅丆丏丒丗丟丠両丣並丩丮丯丱」をGB2312でエンコードし、Shift_JISコードとしてデコードした場合は「8140 、。,.・:;?!゛゜´`¨^」になるからです。

また、以下の8ビットバイトモードでエンコードされる文字は成功していることから、漢字モードによるデータ圧縮を無効化し、全ての漢字を8ビットバイトモードでエンコードすれば問題ない可能性があります。
A040燖燗燘燙燚燛燜燝燞營燡燢燣燤燦燨
EBB0氚氡氩氤氪氲攵敕敫牍牒牖爰虢刖肟
EBC0肜肓肼朊肽肱肫肭肴肷胧胨胩胪胛胂

漢字モードの有効化・無効化を選択できるよう修正しようと思います。

@jason-cpc
Copy link
Author

@yas78さん
ありがとう、そして次の改良版を楽しみにしています。

@yas78先生
谢谢,期待下一个改进版本。

@yas78
Copy link
Owner

yas78 commented Jan 28, 2021

すべての「Shift_JIS」を「GB2312」に置き換えました。
我把所有「"Shift_JIS"」替换成了「"GB2312"」
とは、どの様な操作のことでしょうか。

この質問についての回答をお願いします。

@yas78
Copy link
Owner

yas78 commented Jan 28, 2021

@jason-cpc さん
修正しました。
CharsetにGB2312を設定してテストをお願いします。

@jason-cpc
Copy link
Author

jason-cpc commented Jan 29, 2021

@yas78さん
訂正ありがとうございます。
コンボボックス「Charset」を「GB2312」として選択したところ、テスト結果は次のようになりました。

  1. 純粋な漢字または漢字で始まる文字列を入力すると、生成されたQRコードが間違っており、読み取ることができません。

  2. 英語または数字で始まる文字列を入力する場合、
    2.1 一般的に使用される漢字の場合、正常に認識できます。
    2.2 以下の文字列について、テスト結果は右側に示されています

入力文字列                            テスト結果
…………………………………………………………………………………………………………………………………………………………………………………………………………
8140丂丄丅丆丏丒丗丟丠両丣並丩丮丯丱    エラー、次のように認識されます:8140 、。,.・:;?!゛゜´`¨^
9FF0燄燅燆燇燈燉燊燋燌燍燏燐燑燒燓      成功(前のテストは失敗しました)
A040燖燗燘燙燚燛燜燝燞營燡燢燣燤燦燨    成功
DFF0唣唏唑唧唪啧喏喵啉啭啁啕唿啐唼      エラー、文字化けとして認識:DFF0�����������������������
E040郂郃郆郈郉郋郌郍郒郔郕郖郘郙郚郞    エラー、次のように認識されます:E040觡觠觢觜触詶誆詿詡訿詷誂誄詵誃誁
EBB0氚氡氩氤氪氲攵敕敫牍牒牖爰虢刖肟    成功
EBC0肜肓肼朊肽肱肫肭肴肷胧胨胩胪胛胂    成功

@yas78先生
感谢您做的修正。
我把组合框「Charset」选择为「GB2312」,测试结果如下:

  1. 当输入纯汉字或以汉字开头的字符串时,生成的二维码错误,无法读取;

  2. 当输入以英文或数字开头的字符串时,
    2.1 对于常用的汉字,可以识别成功;
    2.2 对于如下字符串,测试结果在右侧给出

输入的字符串                          测试结果
…………………………………………………………………………………………………………………………………………………………………………………………………………
8140丂丄丅丆丏丒丗丟丠両丣並丩丮丯丱    错误,识别为:8140 、。,.・:;?!゛゜´`¨^
9FF0燄燅燆燇燈燉燊燋燌燍燏燐燑燒燓      成功(之前测试失败)
A040燖燗燘燙燚燛燜燝燞營燡燢燣燤燦燨    成功
DFF0唣唏唑唧唪啧喏喵啉啭啁啕唿啐唼      错误,识别为乱码:DFF0�����������������������
E040郂郃郆郈郉郋郌郍郒郔郕郖郘郙郚郞    错误,识别为:E040觡觠觢觜触詶誆詿詡訿詷誂誄詵誃誁
EBB0氚氡氩氤氪氲攵敕敫牍牒牖爰虢刖肟    成功
EBC0肜肓肼朊肽肱肫肭肴肷胧胨胩胪胛胂    成功

@yas78
Copy link
Owner

yas78 commented Jan 30, 2021

@jason-cpc さん
テスト結果の報告ありがとうございます。

原因が判明しました。
原因は、ByteEncoder.cls の変更により、マルチバイト文字を8ビットバイトモードでエンコードした際に、バイト数が正しくカウントされなくなっていたためです。

修正したので再度テストをお願いします。

@yas78
Copy link
Owner

yas78 commented Jan 30, 2021

@jason-cpc さん

UTF-8であれば、私のiPhoneでも読めました、参考まで。
IMG_2399

@jason-cpc
Copy link
Author

@yas78さん
あなたの継続的な改善のためにありがとうございました。

文字セットGB2312を使用してテストしましたが、結果は次のとおりです。

  1. 純粋な漢字によって生成されたQRコードを読み取ることができます。
  2. 前の7行のテキスト、つまり「8140丂丄丅...」およびその他の文字列については、テスト結果は変更されていません。

次に、文字セットUTF-8を使用してテストしました。同じ入力で、生成されたQRコードを正しく認識できます。

私はコードを移植を開始することができると思う、と私は将来的に問題が発生した際に、再びあなたの助けを得ることを期待します。
再度、感謝します。(by translate.google.cn)

@yas78先生
十分感谢您的持续改进。

我使用字符集GB2312进行了测试,结果如下:

  1. 能够读取纯汉字生成的二维码;
  2. 对于之前的7行文字,即「8140丂丄丅...」等字符串,测试结果没有变化。

接着,我又使用字符集UTF-8进行测试,对于同样的输入,生成的二维码可以被正确识别。

我想我可以着手代码的移植工作了,希望将来遇到问题时,能够再次得到您的帮助。
再次表示感谢。

@yas78
Copy link
Owner

yas78 commented Jan 31, 2021

@jason-cpc さん
テスト結果の報告ありがとうございます。

すみません、あなたの使用しているQRコードリーダーが、GB2312の漢字モード圧縮をサポートしていない可能性について忘れていました。

Shift_JIS以外の場合は、8ビットバイトモードでエンコードするよう修正しました。
再度GB2312を指定してテストをお願いします。

正しく読み取りが行えるかどうかは、QRコードリーダーの仕様に因るところが大きいようです。
もし上手くいかない場合は、残念ですがUTF-8で使用してください。

今度こそ成功すると良いのですが(^^)

@jason-cpc
Copy link
Author

@yas78さん
最新のコードをダウンロードし、GB2312をテスト用に指定しましたが、QRコードリーダーでテストテキストを正確に認識できません。 おそらくあなたが言ったように、私のQRコードリーダーはGB2312漢字モードの圧縮をサポートしていません。
ただし、UTF-8は問題ありません。 今、私はあなたのソースコードを読んで、いくつかのパラメータ調整を行い、コード移行の準備をしています。
お疲れ様でした。

@yas78先生
我下载了最新代码,并指定GB2312进行测试,QR码读取器依旧无法准确识别测试文本。 也许正如您所言,是我的QR码读取器不支持GB2312汉字模式压缩的缘故。
不过,UTF-8是没有问题的。现在,我正在阅读您的源码,进行一些参数调整并为代码移植做准备。
感谢您所做的工作。

@yas78
Copy link
Owner

yas78 commented Feb 1, 2021

@jason-cpc さん
了解しました。
あなたのおかげで多言語対応への知見を得ることができました。
最終チェック後にmasterブランチへマージしたいと思います。
何か不明点がありましたらお問い合わせください。
ありがとうございました。

@yas78 yas78 closed this as completed Feb 1, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants