問題タブ [multibyte-functions]
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.
php - preg_match_all を置き換えるマルチバイト関数?
を置き換えるマルチバイト関数を探していますpreg_match_all()
。$matches
からの引数のように、一致した文字列の配列を提供するものが必要ですpreg_match()
。関数mb_ereg_match()
はそれを実行していないようです-一致するものがあったかどうかを示すブール値のみを提供します。
mb_* functions pageを見ると、 の機能を置き換えるものは見当たりませんpreg_match()
。何を使う?
編集私はばかです。私は最初にこの質問を投稿し、 の代わりを求めました。preg_match
もちろん、これは ですereg_match
。ただし、どちらも最初の結果のみを返します。私が欲しかったのは、preg_match_all
すべての一致テキストを返す の代替品でした。とにかく、ハクレが指摘したように、u
修飾子は私の場合は forで機能します。preg_match_all
php - 文字列に対して php の mb_substr() を使用すると、奇妙な文字が表示される
PHP (5.3.5、Ubuntu) で Web サイトを開発していますが、すべてのコンテンツはスペイン語です。指定されたスペースにテキストが収まらない場合、テキストをカットしたい。これを行いたいphpファイルに次のメタタグがあります。<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />.
テキストは、文字セットがlatin1で照合がlatin1_spanish_ciである MySQL データベースから取得されます。mb_substr() 関数でテキストを切り取ろうとしています。しかし、それは正しく機能していません。たとえば、Short PsicodélicoをShort Psicodéliにカットしたい場合、関数は次のようになります。
mb_substr('Short Psicodélico', 0, 15, 'ISO-8859-1');
しかし、結果は次のようなものです:短い Psicod&ea . 分音記号付きの e は&eaに変換されますが、その理由はわかりません。文字エンコーディングと関係があると思いますが、正確な方法はわかりません。この関数を使用しない場合、文字は本来の姿で表示されますが、Short Psicod&eaの代わりに Short Psicodélicoが表示されます。
php - mb_convert_encoding、mbstring が有効な場合の未定義関数
Apache2 / MySQL で PHP 5.3.8 を実行しているサーバー (Ubuntu 11.10 x64) があります。現在、特定の文字エンコーディングを行う必要があるプロジェクトに取り組んでいますが、マルチバイト (mb_* 関数) がどれも機能していないことがわかりました。
しかし、phpinfo() を見ると、マルチバイト サポートが有効になっていることがわかります。
apt-get install php5-mbstring、php-mbstring、php-multibyte などを試しましたが、どれも機能していないようです。
誰かが私を正しい方向に向けることができますか? 前もって感謝します!
編集:PHPを再コンパイルして修正しました(これは私の最後の手段であり、最初は避けたかったのです)
./configure --enable-mbstring
奇妙なことに、phpinfo() はすでに有効になっていることを示していました。なぜ以前はうまくいかなかったのかわかりません:/
python - Python でマルチバイト文字列を処理する方法
PHP には、マルチバイト文字列を処理するためのマルチバイト文字列関数があります (例: CJK スクリプト)。たとえば、len
Python で関数を使用してマルチバイト文字列の文字数を数えたいのですが、不正確な結果 (つまり、この文字列のバイト数) が返されます。
PHP に mb_strlen のようなパッケージまたは関数はありますか?
php - 複数のmb_ereg_replace()呼び出しを組み合わせる
これらの置換を1つの正規表現に組み合わせるにはどうすればよいですか?
式は期待どおりに機能しますが、3つ未満の置換ステートメントにそれらを組み合わせたいと思います。
既存の方向属性があるかどうかわからないので、単に置き換えることはできません。
最初の2つの置換に追加された代替を編集します。
c++ - 文字列変換: MBCS <-> 複数の \0 を含む UNICODE
ビットマップ ファイルのデータを含む std::string Buffer を std::wstring に変換しようとしています。
を使用しMultiByteToWideChar
ていますが、最初の文字に遭遇した後に関数が停止するため、機能しません'\0'
。文字列の終わりとして解釈するようです。
長さパラメーターとして -1 を渡さずに、std::string-Buffer 内のデータの実際の長さを渡すと、元の文字列のその位置に明確に表示されなかった文字で Unicode 文字列が台無しになります。 .
独自の変換関数を作成する必要がありますか? または、特別なシンボルが正しく変換されないため、データをカジュアルな文字配列として保持する必要がありますか?
よろしく
php - PHP マルチバイト代替 UTF8
文字列操作関数の UTF8 セーフな代替手段を探していました。さまざまなご意見やご提案をいただきました。次の関数が UTF-8 で問題を引き起こす可能性があるかどうか、もしそうなら、代わりに何を使用すればよいかお尋ねしたいと思います。PHP マニュアルの mb_ プレフィックス付き関数のリストは知っていますが、使用しているすべての関数があるわけではありません。
関数は次のとおりです: implode、explode、str_replace、preg_match、preg_replace
ありがとうございました
delphi - 2バイトをWideCharに結合する
Bytes
2つを組み合わせることは可能WideChar
ですか?もしそうなら、どのように?
たとえば、バイナリの文字「ē」は00010011
=19
と00000001
= 1
、または275
一緒です。
WideChar
Delphiで2バイトから取得するにはどうすればよいですか?
windows - MultiByteToWideChar が韓国語の一部の文字を認識しない
この韓国語テキスト (quoted-printable) "2013-03-22 =0E?@HD=0F 05:30" は、MultiByteToWideChar によって Unicode に正しく変換されません。Quoted-printable form here は、このテキストをここに配置するためのものであり、実際の内容には 0xE および 0xF バイトが含まれます。
=0E?@HD=0F はそのまま変換され、結果の Unicode には 0xE および 0xF ASCII 文字が含まれます。ただし、これらの文字の代わりに韓国語の文字がいくつか表示されるはずであることがわかりました。国際文字シーケンスは 127 より大きいコードのバイトで始まるといつも思っていましたが、最近、そうではないことがわかりました。ただし、 MultiByteToWideChar はまだ私が行った方法を考えており、 0xE の処理を拒否していますか? @ HD 0xF は、50225 (または 949) コードページの非 ASCII 韓国語文字のカップルです。.NET 関数 (Encoding.GetEncoding(50255).GetString など) を使用して同じコンピューターで同じことを行うと、変換結果が正しく取得され、韓国語の文字が表示されます。ただし、MultiByteToWideChar は機能しません。MultiByteToWideChar (MB_COMPOSITE など) に設定できるさまざまなフラグを試しましたが、まだうまくいきません。
MultiByteToWideChar を正しく動作させるにはどうすればよいですか? 問題があれば、私は WinXP SP3 を使用しています。繰り返しますが、.NET の方法は正常に機能しており、内部的に Encoding.GetString が MultiByteToWideChar を呼び出しているようです。