問題タブ [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.
c++ - Visual StudioC++コンボボックスコントロールはマルチバイト文字セットでは機能しません
コンボボックスコントロールを利用するVisualStudio2005 C++MFCプロジェクトがあります。プロパティType = Dropdown
。プロジェクトは元々UNICODEにあり、コンボボックスコントロールは期待どおりに機能しました。次に、文字セットをUNICODEからマルチバイト文字セットに変更して、特別なエンジニアリングパッケージであるNationalInstrumentsのMeasurementStudioで利用可能なクラス/ライブラリと互換性を持たせる必要がありました。これを行うと、コンボボックスが正しく機能しなくなる(つまり、ドロップダウンメニューがない)ことに気づきました。この発見を確認するために、私は1つのダイアログと、コンボボックスコントロールのみを備えたほとんど空のプロジェクトを作成しました。バックグラウンドにコードはありません。
もし私が"Test Dialog"
エディターでは、期待どおりに機能します。プログラムを実行すると(デバッグの有無にかかわらず)、上記の動作が得られます。文字セットをUNICODEに変更すると、完全に正常に実行されます。
ちなみに、元のプロジェクトの一部のボタンの外観がマルチバイトに切り替えた後に変更されたことにも気づきましたが、それらの機能はテストしていません。
コンボボックスコントロールの機能が、選択した文字セットによって影響を受けるという既知の理由はありますか?ありがとう。
perl - perlからoracleにマルチバイト文字を挿入するときにORA-01461を押す
テキストファイルからデータベースにレコードを挿入するperlスクリプトがあります。レコードに「RODR_Í_GUEZ」のようなマルチバイト文字が含まれている場合。エラーORA-01461を受け取りましたが、varchar2からlongに切り替える4000文字にはほど遠いです。
設定:
接続する前に役に立たないようです。
Javaクライアント(SQuirreL SQL)を使用し、手動でINSERT INTOステートメントを作成すると、レコードが正常に挿入されるため、データベースの構成方法とは異なると確信しています。
何かご意見は?
php - 別のマルチバイト文字列で1つのマルチバイト文字列を検索する
このコードを使用して、別のutf-8文字列で1つのutf-8文字列を検索します。
しかし、それは常に0を返します!誰かがこの問題のより良い解決策を知っていますか?両方の文字列は、Unicode文字と非Unicode文字の組み合わせである可能性があります。
regex - マルチバイト文字を置き換える正規表現?
マルチバイト文字を自分自身に置き換える正規表現のようなものはありますか?
つまり、次のような文字を含む大きなテキストファイルがあります。
そしてそれらを次のように置き換えたい:
正規表現を使用してこれを行うにはどうすればよいですか? 私はすでに試しました:
と置換する
しかし、それはマルチバイト文字(つまり、utf8)を1行あたり1バイトに「分割」します(したがって、1文字は2行以上に分割されます)。半角文字の場合は正常に機能します...どんな助けでも大歓迎です。
wordpress - WordPressでmb_substrを使用して140個のマルチバイト文字を返すカスタム抜粋関数をコーディングする方法は?
何をしているのかよくわかりませんが、WordPress のカスタム フロント ページで 140 のマルチバイト日本語文字を返そうとしているため、カスタムの抜粋としてこのコードをオンラインで見つけました。strip_tags 関数を持っていない可能性があります。もしそうなら、誰かがこれを機能させるために何をする必要があるか教えてもらえますか? ありがとうございました。
php - 連続した数字を検出するための正規表現 - 英語以外の入力では機能しない
こんにちは、5 つ以上の連続する数字をチェックする次のコードがあります。
英語の入力では問題なく動作しますが、入力文字列にアラビア語/マルチバイト文字が含まれているとつまずきます。入力テキストに数字がなくても true を返すことがあります。
何か案は ?
c - mbrtowc の s==NULL ケースの目的は何ですか?
mbrtowc
(マルチバイト文字ポインター) 引数のポインターを次NULL
のように処理するように指定されています。s
s がヌル ポインターの場合、mbrtowc() 関数は次の呼び出しと同等になります。
この場合、引数 pwc と n の値は無視されます。
私が知る限り、この使用法はほとんど役に立ちません。が部分的に変換された文字を格納していない場合ps
、呼び出しは副作用なしで単に 0 を返します。ps
が部分的に変換された文字を格納している場合'\0'
、 はマルチバイト シーケンスの次のバイトとして有効ではないため ('\0'
文字列ターミネータのみを指定できます)、呼び出しは を返し(size_t)-1
ますerrno==EILSEQ
。ps
未定義の状態のままにします。
意図された使用法は、状態変数をリセットすることだったようです。特にNULL
が渡され、内部状態が使用された場合、ステートフル エンコーディングでの の動作ps
に似ていますが、これは私が知る限りどこにも指定されていません。部分的に変換された文字の のストレージのセマンティクスと競合します (潜在的に有効な初期サブシーケンスの後に 0 バイトに遭遇したときに状態をリセットすると、この危険で無効なシーケンスを検出できなくなります)。mbtowc
mbrtowc
mbrtowc
が の場合mbrtowc
にのみ状態変数をリセットするように指定されていて、それが 0 バイトを指している場合s
はNULL
そうでない場合、望ましい状態リセット動作は可能ですが、そのような動作は書かれている標準に違反します。これは規格の欠陥ですか?私が知る限り、不正なシーケンスに遭遇すると内部状態 ( is の場合に使用) をリセットする方法はまったくないため、正しいプログラムは を使用できps
ません。NULL
mbrtowc
ps==NULL
c - POSIX が wctomb を非スレッドセーフとして指定するのに、mbtowc を指定しないのはなぜですか?
XSH 2.9.1では、wctomb
スレッドセーフである必要のない関数の 1 つとしてリストされています。ただし、逆の変換関数mbtowc
はリストに表示されません。シフト状態を使用するエンコーディングを使用する実装では、どちらにもスレッドセーフな API がなく、一方がスレッドセーフである必要があり、もう一方がそうでないということは意味がありませんが、どちらもステートフルエンコーディングを禁止しない限りスレッドセーフにはなりません。
wcstombs
(リストにある) と(ない) についても同様ですmbstowcs
。これらの関数は両方とも、最初のシフト状態で開始および終了する文字列全体で動作するため、ステートフルではなく、それらの API はスレッド セーフです。他の。
誰でもこれに光を当てることができますか?
php - マルチバイト識別子リスト
マルチバイト文字とその使用方法を調べていましたが、さまざまなマルチバイトに使用されるさまざまな識別子/パターンがいくつありますか。
例: &nbps;
, &#nbsp;
, U+0026
,%20
&
、&#
、などの異なる識別子u+
は%
いくつありますか?
255 文字を超える単語があり、おそらくマルチバイト (ハッキングの試み) である場合、入力を探しようとしています。次に、単語を分割できるかどうかを確認し、マルチバイトの識別子を持っているかどうかを確認してから、ハックの試みを停止します。
c++ - パーミル記号のwctombチョーク(‰)
たくさんのユニットラベルを印刷しようとしています。それらのいくつかはギリシャ文字を含み、いくつかは他の面白いコードポイントを持っています。
wctomb
私はそれを、例えばUTF-16文字8240で何をすべきかわからない関数にまでさかのぼりました。
wctomb
使用するロケールを「すべてのUnicode文字」など に設定するにはどうすればよいですか?
必要な文字から始めて、必要な適切なロケール名を見つけるにはどうすればよいですか?