7

Express フレームワークを使用して Node JS でルートを設定しようとすると問題が発生します。

私のルートはこれです:

app.get('/campaña/nueva', sms.nueva);

しかし、邪悪な「Ñ」のために、私はそれを機能させることができません(「N」でも機能します)

私はしばらくの間 codeigniter を使用しましたが、どの文字を有効または無効にするかを設定できますノードでそれを有効にする回避策または方法を知っていますか?

4

2 に答える 2

12

URL エンコードされたものと、おそらく UTF-8 (およびおそらく Latin-1 も) の両方のバリアントを処理する必要があると思います。以下を確認してください。

  1. クライアント (ブラウザ) はどのように URL を送信していますか?

    • としてエンコードされた URL%C3%B1 ?
      • chromeとfirefoxは%C3%B1エンコーディングを送信します
      • これが支配的で従順な行動だと思います
    • ユニコード?
      • 私がテストしcurlたところ、おそらくUTF-8である端末から取得したエンコーディングであると推測される単一の文字を送信しているように見えます。
  2. それを踏まえて、ルートを調整してみてください。正規表現または明示的なリストを使用できます

.

app.get('/campaña/nueva', sms.nueva)
app.get('/campa%c3%b1a/nueva', sms.nueva)
//Or for convenience if you like
app.get('/' + encodeURIComponent('campaña') + '/nueva', sms.nueva) 

私の推測では、最終的にはほとんどのブラウザーが URL エンコードされたバージョンを送信するので、おそらく最後のバージョンだけで十分でしょう。

于 2013-03-09T18:11:46.217 に答える