1

私は常にrawurlencodeを使用して、ユーザーが入力したデータをmysqlデータベースに保存してきました。私がこれを行う主な理由は、外国人のキャラクターを撫でるのが非常に簡単であるためです。次に、rawurldecodeを使用してデータを取得して表示します。

rawurlencodeはこの目的のためのものではないことをどこかで読みました。私がしていることに不利な点はありますか?


それで、ウムラウトなどの多くの文字を含むドイツの住所を持っているとしましょう。これをmysqlデータベースに保存する最も簡単な方法は、間違って検索スクリプトを使用して検索できるリスクがないことです。これまでのところ、rawurelencodeは私たちのシステムにとって優れています。おそらく、スペースなどの一般的な文字ではなく、外国の文字をエンコードするだけで練習を改善できます。これは、スペースの無駄です。私は完全に同意します。

4

3 に答える 3

1

確かにあります。

実用的なものから始めましょう。大きなクラスの文字の場合、データのバイトごとに3バイトのストレージを消費します。の説明rawurlencode(そしてもちろんRFC)はそれらの文字が

-_。〜を除くすべての英数字以外の文字

これは、スペースを無駄にしない合計26 + 26 + 10(英数字)+ 4(特別な例外)=66文字があることを意味します。

次に、論理的な欠点もあります。データ自体を保存するのではなく、URLに合わせて調整されたデータの表現を保存することになります。データ自体がURLでない限り、それはあなたがすべきことではありません。

于 2012-04-20T11:03:30.610 に答える
0

私が考えることができる欠点:

  • ディスクスペースの浪費。
  • CPUサイクルの浪費は、すべての読み取りとすべての書き込みでエンコードとデコードを繰り返します。
  • 追加の複雑さ(MySQLクライアントでデータを検査することさえできません)。
  • 全文検索を使用することはできません。
  • URLエンコーディングは必ずしも一意ではありません(少なくとも2つのRFCがあります)。データが失われることはありませんが、データが重複する可能性があります(たとえば、2つの行に実際に同じデータが含まれている一意のインデックス)。
  • 日付などの文字列以外のデータを誤ってエンコードする可能性があります。2012-04-20%2013%3A23%3A00

ただし、主な考慮事項は、MySQLには完全なUnicodeカタログの保存に問題がないため、このような手法は完全に恣意的で不要であるということです。また、すべての文字列のeとoを入れ替えることもできますHolle, werdl!。アプリは正常に動作しますが、付加価値はありません。

更新:あなたの常識が指摘しているように、SQL句ORDER BYはもはや使用できないほど基本的です。国際文字が無視されるわけではありません。%基本的に、16進文字のASCIIコードに基づいて任意のソート順を取得します。確実にできない場合はSELECT * FROM city ORDER BY city_name、DBを役に立たなくしていることになります。

于 2012-04-20T11:19:53.910 に答える
0
  • フォークを使ってスープを食べています
  • バーベキュー用の石炭を発射するために金銭法案を使用しています
  • 私はやかんを使って卵をゆでています。
  • 私は顕微鏡を使って釘を打ちます。

私がしていることに不利な点はありますか?

はい

意図的ではないツールを使用しています。これは常に不利です。

常に特定の仕事のために意図されたツールを使用している正気の人間。ランダムに選んだものはありません。特に、適切な工具供給に不足がない場合。

名前からわかるように、URLエンコードはデータベースでの使用を目的としたものではありません。それだけで、正気の開発者にとって十分な理由です。周りを見てください:適切なツールを見つけてください。

「常識」と呼ばれるものがあります。これは、日常生活で広く使用されているものですが、何らかの理由でphpの世界には常に存在しません。
常識は私たちに警告することができます:私たちが間違ったツールを使用している場合、それは仕事を台無しにするかもしれません。遅かれ早かれそれはそれを台無しにするでしょう。特定の詳細を尋ねる必要はありません-それは一般的なルールです。私たちはこのルールを約5歳で学んでいます。

いくつかのウェブのもので遊んでいる間もそれを使用しないのはなぜですか?

自分自身に質問してみませんか:

外国の文字を保存することの何が問題になっていますか?

urlencodeを使用すると、外国の文字を簡単に操作できます

urlencodeなしで遭遇した困難はありますか?

質問に答えるには常識で十分だと思いますが、人々は常に「前兆」、つまり証拠を探します。はい、どうぞ:

データベースの仕事は、データの保存と取得だけにとどまりません。プレーンテキストファイルは、このような基本的なタスクも処理できます。
データ操作は、私たちがデータベースを使用している目的です。
最も広く使用されているのは、並べ替えフィルタリングです。

  • データベースのような非常にインテリジェントなものは、データを文字に依存しないようにソートおよびフィルタリングできます。これは非常に便利な機能です。ただし、もちろん、ランダムなコードとしてではなく、文字をそのまま保存する場合にのみ実行できます。
  • テキストの並べ替えでは、文字テーブルのバイナリ順序以外の順序を使用する場合もあります。一部のumlaut文字はテーブルの他の部分に存在する場合がありますが、データベースの照合により適切な場所に配置されます。もちろん、ランダムなコードとしてではなく、文字をそのまま保存する場合にのみ実行できます。
  • データベースにすでに保存されているデータを操作しなければならない場合があります。たとえば、文字列から一部を切り取り、入力した値と比較します。urlencodedデータでどのように行われるべきですか?
于 2012-04-20T11:28:14.873 に答える