diff --git a/ports/x68k/README.md b/ports/x68k/README.md index beb456094bb5..f90414f92a84 100644 --- a/ports/x68k/README.md +++ b/ports/x68k/README.md @@ -292,6 +292,33 @@ MicroPython向けLチカのコードをそのままX680x0版で動かすため # ここからは割り込み許可 ``` +## 日本語文字列の扱い + +`str` クラスでの日本語文字列の扱いに対応しています。 +オリジナルのMicroPythonは文字列を内部的にUTF-8で扱っていますが、X680x0の文字コードはシフトJISなので、文字列の内部処理に手を入れてシフトJISのまま扱うようになっています。 + +このため、Python文字列内のエスケープシーケンス '\uXXXX' はUnicodeではなくシフトJISのコード番号を指定します。 + +`str`オブジェクトと`bytes`/`bytearray`オブジェクトでは日本語文字列を代入したときの扱いが異なります。`str`オブジェクトは多バイト文字を文字単位で扱いますが、`bytes`/`bytearray`オブジェクトではバイトの並びとして扱います。 + +``` +>>> a=str('日本語','') # strオブジェクトを作成 +>>> a +'\u93fa\u967b\u8cea' +>>> len(a) # 文字数は3文字 +3 +>>> print(a) +日本語 + +>>> b=bytes('日本語','') # bytesオブジェクトを作成 +>>> b +b'\x93\xfa\x96{\x8c\xea' +>>> len(6) # 6バイト +6 +>>> print(b) +b'\x93\xfa\x96{\x8c\xea' +``` + ## インラインアセンブラ MicroPythonのインラインアセンブラ機能をサポートしています。