問題タブ [multibyte]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
3415 参照

encoding - 可変バイトエンコーディングの説明

私はバイトエンコーディングの世界に非常に慣れていないので、単純な概念を間違った方法で使用/表現している場合は、すみません (そして、ぜひ訂正してください)。

可変バイトエンコーディングを理解しようとしています。ウィキペディアの記事 ( http://en.wikipedia.org/wiki/Variable-width_encoding ) と、情報検索の教科書の本の章を読みました。10 進整数をエンコードする方法を理解していると思います。たとえば、整数 60 に可変バイト エンコーディングを提供したい場合、次の結果が得られます。

(上記が間違っている場合はお知らせください)。スキームを理解したとしても、情報がどのように圧縮されているかは完全にはわかりません。通常、整数を表すために 32 ビットを使用するため、60 を表すと1 1 1 1 0 026 個のゼロが前に付いてしまい、代わりに 8 ビットだけで表すのではなく、そのスペースを無駄にするのでしょうか?

明確にしていただきありがとうございます。

0 投票する
3 に答える
5439 参照

php - PHP でのマルチバイト文字列の解析

ステート マシンに基づいて (HTML) パーサーを作成したいのですが、実際に入力を読み取ったり使用したりする方法に疑問があります。入力全体を 1 つの文字列にロードし、それを配列と同様に操作し、そのインデックスを現在の解析位置として保持することにしました。

シングルバイト エンコーディングでは問題はありませんが、マルチバイト エンコーディングでは、各値は文字ではなく文字のバイトを表します。

例:

出力:

これは、ループ内の文字列を繰り返し処理して単一の文字をチェックできないことを意味します。文字の途中にいるかどうかわからないためです。

質問は次のとおりです。

  • パフォーマンスに適した方法で、文字列から単一の文字をマルチバイトセーフで読み取るにはどうすればよいですか?
  • この場合は配列だったので、文字列を操作することをお勧めしますか?
  • 入力の読み方は?
0 投票する
2 に答える
752 参照

php - 2つの正規表現をマージして、文字列内の単語を切り捨てます

文字列を単語全体に切り捨てる次の関数を考え出そうとしています(可能であれば、文字に切り捨てる必要があります)。

ここにいくつかのテストがあります:

どちらもそのまま動作しますが、2番目preg_replace()をドロップすると、次のようになります。

Iñtërnâtiônàlizætiøn_and_then_the_quick_brown_fox_jumped_overly_the_lazy_dogそしてある日、怠惰な犬は貧しいキツネを死ぬまでぶつけました。

substr()バイトレベルでしか機能せず、ATMにアクセスできないため、使用できませんmb_substr()。2番目の正規表現を最初の正規表現に結合しようと何度か試みましたが、成功しませんでした。

SMSを助けてください、私はこれにほぼ1時間苦労しています。


編集:申し訳ありませんが、私は40時間起きていて、恥知らずにこれを見逃しました:

それでも、誰かがより最適化された正規表現(または末尾のスペースを無視する正規表現)を持っている場合は、共有してください:

編集2:私はまだ末尾の空白を取り除くことができません、誰かが私を助けることができますか?

編集3:さて、私の編集はどれも実際には機能しませんでした、私はRegexBuddyにだまされていました-私はおそらくこれを別の日に残して、今少し眠るべきです。今日はオフ。

0 投票する
3 に答える
13757 参照

php - マルチバイトstrtr()-> mb_strtr()

関数strtr()のマルチバイトバリアントを書いた人はいますか?これが必要です。

編集1(望ましい使用法の例):

0 投票する
2 に答える
1718 参照

c - C / C ++I18Nmbstowcsの質問

私はC/C++アプリケーションの入力の国際化に取り組んでいます。現在、マルチバイト文字列からワイド文字列への変換で問題が発生しています。

コードはクロスプラットフォーム互換である必要があるため、可能な限りmbstowcsとwcstombsを使用しています。

私は現在WIN32マシンで作業しており、ロケールを英語以外のロケール(日本語)に設定しました。

マルチバイト文字列を変換しようとすると、変換の問題が発生しているようです。

コードの例を次に示します。

実行の最後に、ワイド文字列には変換されたデータが含まれていません。MultiByteToWideCharを使用して現在のコードページを送信すると、コードページの設定に問題があると思います。

例:MultiByteToWideChar(CP_ACP、0、mbsVal、-1、wcsVal、size + 1); mbstowcs呼び出しの代わりに、変換は成功します。

私の質問は、MuliByteToWideChar呼び出しの代わりに一般的なmbstowcs呼び出しをどのように使用するかです。

0 投票する
6 に答える
14956 参照

php - PHPを使用して単語が日本語か英語かを確認する方法

この関数で英語の単語と日本語の単語のプロセスを変えたい

ありがとうございました

0 投票する
2 に答える
9439 参照

android - Java/Android で 2 バイトをマージする

私は22バイトのフレームを持っています。フレームは、Bluetooth を介した加速度計からの入力ストリームです。加速度センサーの読み取り値は、2 バイトに分割された 16 ビットの数値です。

バイトを追加するのではなく、バッファ[1] +バッファ[2]でバイトをマージしようとすると、結果が並べて表示されます。1+2 = 12 です。

この 2 バイトを組み合わせて元の数値を取得する方法を教えてください。(ところで、バイトはリトルエンディアンで送信されます)

ありがとう

0 投票する
1 に答える
975 参照

multibyte - マルチバイト文字を 16 進数に変換する

BizTalk マッパーを渡す受信ファイルがあります。ファイルのフィールドの 1 つに 3 バイトの漢字があるかどうかを識別する必要があります (ファイルは xml です)。3バイト文字を見つける方法はすでにわかっています。ただし、これを16進数に変換するにはどうすればよいですか? 16 進値は、出力スキーマに送信してから DB2 サーバーに送信することです。

0 投票する
2 に答える
10712 参照

c - マルチバイト文字列のバイトサイズを取得する方法

Visual C でマルチバイト文字列のバイト サイズを取得するにはどうすればよいですか? 関数はありますか、それとも自分で文字数を数えなければなりませんか?

または、より一般的には、TCHAR 文字列の適切なバイト サイズを取得するにはどうすればよいですか?

解決:

編集:
null で終わる文字列のみについて話していました。

0 投票する
4 に答える
6041 参照

c++ - wstring :: c_strが適切に削除されない場合、メモリリークが発生しないのはなぜですか

コードセグメント1:

コードセグメント2

コードセグメント2の値が削除されない場合、メモリリークは発生しません。ただし、コードセグメント1のvalue1が削除されていない場合は、メモリリークが発生します。wstring::c_strの内部コードは私には同じように見えます。