Domanda

Sto lavorando su un sito che il cliente ha tradotto in croato e Sloveno.In linea con i nostri attuali schemi di URL che abbiamo generato URL ri-scrittura di regole che imitano il layout dell'applicazione che ha portato ad avere molti non-ascii i caratteri dell'Url.

Esempi š ž č

Alcuni link sono generati da Flash tramite getURL, alcuni sono di serie i link HTML.Alcuni sono programatic Risposta.Reindirizza e alcuni attraverso l'aggiunta di 301 codici di stato e la posizione delle intestazioni di risposta.Sto testando in IE6, IE7 e Firefox 3 e internitmtently, il browser visualizza il non-latini caratteri url codificato.

š = %c5%a1
ž = %c5%be
č = %c4%8d

Sto indovinando questo è qualcosa a che fare con IIS e il modo in cui gestisce Risposta.Redirect e AddHeader("Location ...

Qualcuno sa di un modo di forzare IIS non URL codificare questi caratteri o è il mio migliore per sostituire questi con i non-caratteri diacritici?

Grazie

È stato utile?

Soluzione

Chiedetevi se è davvero vogliamo che loro non-url codificato.Cosa succede quando un utente che non ha il supporto per i caratteri installati viene intorno?Non ho idea, ma non vorrei rischiare di fare grandi parti del mio sito non disponibile per gran parte del mondo dei computer...

Invece, concentrarsi su perché avete bisogno di questa funzione.È per rendere l'url di essere bello?Se è così, con un regolare z invece ® farà bene.Utilizza la url per l'input dell'utente?Se è così, la codifica url di tutto, prima che l'analisi di uscita link e url-decodificare, prima di utilizzare l'ingresso.Ma non usare ® e altri locali di lettere di url...

Come nota a margine, in Svezia abbiamo å, ä e ö, ma nessuno li usa negli url usiamo un, a e la o, perché il browser non supporta la url per il contrario.Questo non sorprende gli utenti, e molto pochi sono in grado di capire quali sono le parole che stiamo puntando solo perché l'anello å manca nell'url.Il testo continua a mostrare correttamente la pagina, giusto?;)

Altri suggerimenti

Qualcuno sa di un modo di forzare IIS non URL encode

Si deve codifica URL.Il superamento di un raw ‘š’ (\xC5\xA1) in un'intestazione HTTP non è valido.Un browser potrebbe correggere l'errore fino a ‘%C5%A1’ per voi, ma se è così il risultato non può essere diverso se si fosse appena scritto ‘%C5%A1’, in primo luogo.

Tra un raw ‘š’ nel link, non è sbagliato in quanto tale, il browser dovrebbe codifica UTF-8 e la codifica URL, come per l'IRI spec.Ma per assicurarsi che questo funziona davvero è necessario assicurarsi che la pagina con il link in è servita come codifica UTF-8.Di nuovo, manuale di codifica URL è probabilmente il più sicuro.

Ho avuto problemi con la codifica UTF-8 Url, si può collegare un esempio che non funziona?

avete un link di riferimento dove i dettagli di cosa è composto un valido HTTP header?

Canonicamente, RFC 2616.Tuttavia, in pratica, è un po ' inutile.Il passaggio critico è:

Parole di *TESTO PUÒ contenere caratteri set di caratteri diverso da ISO-8859-1 solo quando codificata secondo le regole della RFC 2047.

Il problema è che, secondo le regole del RFC 2047, solo ‘atomi’ in grado di ospitare un 2047 ‘codificati-parola’.Il TESTO, nella maggior parte dei casi è compreso in HTTP, non può essere riuscito ad essere un atomo.Comunque RFC 2047 è esplicitamente progettato per RFC 822 formati, e sebbene HTTP assomiglia molto a un 822 formato, non è in realtà compatibile;essa ha la sua propria grammatica di base con sottili ma significative differenze.Il riferimento alla RFC 2047 HTTP spec non dà nessun indizio di come si potrebbe essere in grado di interpretare in qualsiasi modo coerente e, per quanto riguarda chiunque so che può capire, un errore.

In ogni caso non il browser tenta di trovare un modo di interpretare la RFC 2047 codifica ovunque nella sua HTTP trattamento.E mentre non-ASCII byte sono definiti in RFC 2616 per essere in ISO-8859-1, in realtà i browser sono in grado di utilizzare una serie di altre codifiche (ad UTF-8, o qualunque sia il sistema di codifica predefinita è) in vari luoghi durante la manipolazione di intestazioni HTTP.Quindi non fare affidamento anche sul 8859-1 set di caratteri!Non è che che avrebbero dato ‘š’ comunque...

Tali caratteri deve essere valido in un URL.Ho fatto l'URL SEO roba su un grande sito di viaggi e quando ho saputo che.Quando si forza i segni diacritici ascii è possibile modificare il significato delle parole, se non stai attento.Spesso non c'è la traduzione come segni diacritici esistere solo nel loro contesto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top