問題タブ [unicode-normalization]
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 - PHP では、HFS+ と他の場所でエンコードされたファイル名の違いにどのように対処すればよいですか?
検索データベースが 1 行に 1 つのファイル名を持つテキスト ファイルである、非常に単純なファイル検索を作成しています。データベースは PHP で構築されており、ファイルを grep することで一致が検出されます (これも PHP を使用します)。
これは Linux ではうまく機能しますが、非 ASCII 文字が使用されている Mac では機能しません。HFS+ (MacOSX) と ext3 (Linux) では、名前のエンコード方法が異なるようです。ここにtest.phpがあります:
MacOSX を実行する場合:
Linux (または MacOSX の nfs マウントされた ext3 ファイルシステム) で実行する場合:
このスクリプトが両方のプラットフォームで「等しい」を返すようにする方法はありますか?
excel - VBAで韓国語の文字列から文字を抽出する方法
MS-ExcelおよびMS-Accessで韓国語の単語から頭文字を抽出する必要があります。Left( "한글"、1)を使用すると、最初の音節、つまり한が返されます。必要なのは最初の文字、つまりㅎです。これを行う機能はありますか?または少なくともイディオム?
文字列からUnicode値を取得する方法を知っていれば、そこからそれを解決することはできますが、車輪の再発明を行うことになると確信しています。(再び)
mysql - うーん、なぜ「2」または「2」で検索すると同じレコードが返されるのですか?
初心者の質問は許してください。しかし、Mysqlで「2」または「2」で検索すると同じレコードが返されるのはなぜですか。
例えば:
'slug'という名前の文字列フィールドを持つレコードがあり、値が'2'であるとします。そして、次のSQLは同じレコードを返します。
unicode - Unicode パスワードを正しく実装するにはどうすればよいですか?
Unicode パスワードのサポートを追加することは、開発者が無視してはならない重要な機能です。
それでも、パスワードに Unicode のサポートを追加するのは難しい作業です。なぜなら、Unicode では同じテキストがさまざまな方法でエンコードされる可能性があり、そのためにユーザーがログインするのを妨げたくないからです。
パスワードを UTF-8 として保存するとします。この質問は Unicode エンコーディングとは関係なく、Unicode の正規化に関連していることに注意してください。
問題は、Unicode データをどのように正規化するかです。
比較できるかどうかを確認する必要があります。次の Unicode 標準がリリースされたときに、パスワードの検証が無効にならないようにする必要があります。
注: Unicode パスワードがおそらくまったく使用されない場所もいくつかありますが、この質問はUnicode パスワードを使用する理由や時期に関するものではなく、適切な方法でそれらを実装する方法に関するものです。
1回目の更新
OSを使って正規化するように、ICUを使わずにこれを実装することは可能ですか?
python - Python regex \w は発音区別記号の組み合わせと一致しませんか?
分音記号を組み合わせた UTF8 文字列があります。\w
正規表現シーケンスと一致させたい。アクセントのある文字には一致しますが、分音記号を組み合わせたラテン文字には一致しません。
(SO マークダウン プロセッサは、上記の発音区別記号の組み合わせに問題があるようですが、最後の行に ́ があります)
とにかく発音区別記号を組み合わせて一致させるものはあります\w
か? このテキストはファイル名からのものであるため、テキストを正規化したくありません。また、「ファイル名のユニコード正規化」全体をまだ実行する必要もありません。これは Python 2.5 です。
unicode - 発音区別符号が先行し、アクセントがフォームを組み合わせていない場合に、CodePageをUnicodeフォームCに正規化する方法
「発音区別符号のアクセントを組み合わせた形に強制することによって、この文字列を正規化する」と言えるようにしたいと思います。
詳細:
私のコードはC#で開発されていますが、問題が言語固有であるとは思われません。
私のデータには2つの問題があります(1)発音区別符号がこのデータの基本文字の前にあります(Unicode形式のDまたはKDの基本文字の後に続く必要があります)。(2)私のデータのアクセント発音区別符号はギリシャ語のTonos(U + 0384)ですが、正規化するにはフォーム(U + 0301)を組み合わせる必要があります。
これをプログラムで実行したいと思います。このタイプの操作はよく知られているはずですが、C#グローバリゼーションメソッドではサポートが見つかりませんでした(正規化メソッドはありますが、発音区別符号を強制的に結合形式にする方法はありません)。
java - File.listFiles() は JDK 6 で Unicode 名をマングルします (Unicode 正規化の問題)
OS X と Linux の両方で Java 6 のディレクトリ コンテンツを一覧表示するときに、奇妙なファイル名エンコーディングの問題に苦しんでいます。File.listFiles()
および 関連するメソッドは、システムの残りの部分とは異なるエンコーディングでファイル名を返すようです。
問題を引き起こしているのは、これらのファイル名の表示だけではないことに注意してください。私は主にファイル名をリモート ファイル ストレージ システムと比較することに関心があるので、出力に使用される文字エンコーディングよりも名前文字列の内容に関心があります。
ここにデモンストレーションするプログラムがあります。Unicode 名でファイルを作成し、直接作成されたファイルから取得したファイル名のURL エンコードバージョンを出力し、親ディレクトリの下にリストされている場合は同じファイルを出力します (このコードは空のディレクトリで実行する必要があります)。結果は、File.listFiles()
メソッドによって返されたさまざまなエンコーディングを示しています。
システムでこのテスト コードを実行すると、次のようになります。%CC
対%C3
文字表現に注意してください。
OS X Snow Leopard:
KUbuntu Linux (同じ OS X システム上の VM で実行):
file.encoding
システムプロパティやさまざまなLC_CTYPE
環境LANG
変数の設定など、文字列を一致させるためにさまざまなハックを試しました。何も役に立ちませんし、そのようなハックに頼りたくもありません。
この(やや関連する)質問とは異なり、奇妙な名前にもかかわらず、リストされたファイルからデータを読み取ることができます
objective-c - NSStringがNFDで正規化されているかどうかを判断する方法は?
特定の NSString が NFD 形式であるかどうかを判断する必要があります。それ、どうやったら出来るの?
環境 :
Mac OS から (NSString の形式で) 取得したファイル パスは、正規分解形式 (NFD) です。これは特に、ファイルシステムが HFSPlus の場合に当てはまります。 http://developer.apple.com/mac/library/technotes/tn/tn1150.html#CanonicalDecomposition
これから事前に構成された文字列が必要です。precomposedStringWithCanonicalMapping
ここで、ファイル名が NFD 形式で分解されていることがわかっている場合にのみ、関数を実行したいと考えています。
私が考えることができる解決策:
私の解決策は大丈夫ですか?また、ファイルシステムの出力 (NFD で) についての私の理解は正しいですか?
unicode - SPARQL QUERY OWL ファイル
オントロジーに対する SPARQL クエリについてお伺いできますか。私が持っている family.owl ファイルは、protege 3.4 からデータを含むオントロジー ビルドです。
サイト (http://www-sop.inria.fr/edelweiss/software/corese/v2_4_0/manual/index.php#coreseapi ) で Java と CORESE API を使用して、上記の family.owl をクエリします。次の SPARQL クエリを使用します。
結果は Tuấn (真の結果は Tuấn でなければなりません)
「where」句を次WHERE { fm:Tùng fm:haschild ?child }
のように置き換えると、結果は空になります(真の結果はTuấnでなければなりません)
文字列 "Tùng" と "Tuấn" で間違った結果を知っています。この文字列には文字 Unicode ù、ấ があります</p>
CORESE API で Unicode 文字を使用して、sparql でフクロウ ファイルをクエリできますか。
php - preg_match関数が特定のPHPスクリプトで正しく機能しない
preg_match関数を使用して、作成した2つのPHPスクリプトのテキストエリアフォームから不要な文字をフィルタリングしていますが、そのうちの1つでは機能しないようです。
問題のあるスクリプトは次のとおりです。
ご覧のとおり、preg_matchは、! "#$%&/()などの不要な文字をフィルタリングするだけです。
ただし、「ñ」や「á」などの特殊文字を入力するたびに、エラーコードがトリガーされます。
同じpreg_matchで完全に機能し、不要な文字だけをフィルタリングする、この非常によく似たスクリプトがあります。
だから問題は、最初のスクリプトで何が間違っているのかということです。
私はすべてを試しましたが、常に失敗し、エラーが表示されます。
なにか提案を?