私はC#からPythonに文字列索引付けの問題をたくさん持っています。基本的に既存のデータパイプライン(C#では)は、Pythonモデルが消費する文字列インデックスを生成します。これらの2つの言語は、それぞれのユニコードシステムで異なるコードポイントを使用しています。http://illegalargumentexception.blogspot.com/2010/04/i18n-comparing-character-encoding-in-c.htmlPython3で異なるコードポイントを使用できますか?
したがって、C#(16ビット、暗黙のutf-16)の文字列の長さとインデックスは100%関連性がありませんPythonで(16または32)。場合によっては、文字が0xFFFF(16ビット以上)より大きい場合、PythonはC#よりも小さな文字列長を生成することがあります。
問題は:文字列のインデックスと長さが同じであることを確認する方法はありますか? C#のように暗黙的に16ビットを使うようにPythonを強制することは可能ですか?
具体例はこれです:
, Ṣur
そのUTF-8バイト:Pythonで
b'\xf0\x90\xa4\x91\xf0\x90\xa4\x85\xf0\x90\xa4\x93, \xe1\xb9\xa2ur'
C#は、15インデックスがされるレポートなど、この文字列の長さは、12ここでまた、ある言語から別の言語へ
これはPythonの文字列ではありません。これは生のバイトシーケンスです。 –
utf-8エンコーディングの文字列 "、üur"です。コピー&ペーストすると、文字が再現されないことがあります。私は調査のためにバイトをコピーして貼り付けます。 –
'.decode( 'utf-8')'を呼び出すと、文字列ができます。しかし、あなたが示したことは文字列ではありません。 –