(これと同様の質問がStackOverflowで行われていますが、正確にはこれではありません。最も近いのは、おそらく「ユニコード文字列をASCIIに変換するjavascript」であり、「これは重複している必要があります」というコメントがすでにあります。似たような投稿をいくつか読んだことがありますが、私の特定の質問には答えていません。私は非常に優れたW3Schoolsサイトを調べ、Googleでも検索しましたが、その方法でも答えは見つかりませんでした。したがって、ここでのヒントは非常に重要です。感謝。)
JavaScriptの一部に渡されるバイトの配列があります。JavaScriptでは、データは文字列で到着します。サードパーティのアプリケーションからのものであるため、転送のメカニズムがわかりません。文字列が「広い」か「狭い」かはわかりません。
私のJavaScriptには、のようなコードがありますb = str.charCodeAt(pos);
。
私の問題は、0x86=134などのバイト値が文字0x2020=8224として送信されていることです。これは、元のバイトがラテン1(おそらく)の「短剣」文字として解釈され、同等のUnicodeコードポイント。(問題はJavaScriptの「障害」である場合とそうでない場合があります。)0x00..0x7Fと0xA0..0xFFの範囲は問題ないように見えますが、他の値でも同様の問題が発生しますが、0x80..0x9Fのほとんどの値が影響を受けます。いずれの場合も、値は元のLatin-1のUnicodeのようです。
もう1つの観察結果は、文字列の長さが、長さがバイト単位で測定された場合に狭い文字列に期待する長さであるということです。(一方、lengthが抽象文字で値を返す場合、これは何も教えてくれません。)
したがって、JavaScriptでは、文字列の「raw」バイトを取得する方法、Latin-1またはASCII文字コードを直接取得する方法、文字エンコーディング間で変換する方法、またはデフォルトのエンコーディングを定義する方法はありますか?
独自のマッピングを作成することはできますが、作成したくありません。それが私がやることになると思いますが、それは応急修理に応急修理をしているような感覚があります。
また、呼び出し元のアプリケーションで調整できるものがあるかどうかも調べています(データを幅の広い文字列として渡す可能性があるためですが、疑わしいと思います)。
いずれにせよ、私は単純なJavaScriptソリューションがあるかどうか、またはなぜないのかを理解することに興味があります。
(受信データが文字データの場合、Unicodeを自動的に処理するのは素晴らしいことです。しかし、そうではなく、単なるバイナリデータストリームです。)
ありがとう。