Quiero hacer una cadena en una URL usando C#, debe haber algo en el marco de .NET que pueda ayudar, ¿verdad ?.Cómo reemplazo todos los espacios con% 20 en C#
Respuesta
Creo que estás buscando HttpServerUtility.UrlEncode.
System.Web.HttpUtility.UrlEncode(string url)
Creo que [Uri.EscapeUriString()] (https://msdn.microsoft.com/en-us/library/system.uri.escapeuristring%28v=vs.110%29.aspx) es el método apropiado si tenemos ser religioso al respecto :) –
@StoyanDimov: 'EscapeUriString()' no escapa a '&' ni '=' ni '?', por lo que 'EscapeDataString()' parece ser el que se va a usar. –
Alguien había editado esta pregunta para cambiar por completo la respuesta. Nosotros [no deberíamos usar la edición para cambiar el significado] (http://stackoverflow.com/help/editing) de una publicación en particular. – palswim
A partir de los documentos:
String TestString = "This is a <Test String>.";
String EncodedString = Server.HtmlEncode(TestString);
Actualización: En realidad, esto no URLs codifica en HTML. Use UrlEncode (TestString) como dicen todos los que pueden leer mejor que yo. No eliminar esto en caso de que alguien encuentre este hilo mientras busca la codificación html.
El OP pregunta por la codificación de URL; no codificación de HTML –
No, esto es para codificación HTML, no codificación URL (como su nombre lo indica ...) –
Sí, tiene razón, use UrlEncode() para las URL de codificación; esto es para codificar Entidades Html solo –
Otra forma de hacer esto es usar Uri.EscapeUriString(stringToEscape)
.
Desafortunadamente, este método no 'escapa '' '' caracteres. –
Tampoco escapa '=', ni '?'. Parece que 'Uri.EscapeDataString()' es el camino a seguir. –
I encontraron útiles System.Web.HttpUtility.UrlPathEncode(string str);
Reemplaza espacios con% 20 y no con +.
Parece que no hay un método UrlPathDecode? – syclee
Hay, al menos en 4.0. System.Web.HttpUtility.UrlDecode ("a% 20b") produce "a b" – Abacus
Funciona, pero no lo use, ya que es para navegadores. Use Uri.EscapeUriString (STRING) en su lugar. MSDN: "No utilizar; destinado solo para la compatibilidad del navegador. Use UrlEncode". http://msdn.microsoft.com/en-us/library/system.web.httpserverutility.urlpathencode.aspx – VRC
Para escaparse correctamente de los espacios, así como del resto de los caracteres especiales, use System.Uri.EscapeDataString(string stringToEscape)
.
que tenía que hacer esto también, encontraron esta cuestión desde hace años, pero título de la pregunta y el texto no se ajusta exactamente con preparar y utilizar Uri.EscapeDataString
o UrlEncode
(no utilizar que un favor!) Por lo general no tiene sentido a menos que estemos hablando de pasar URL como parámetros a otras URL.
(Por ejemplo, pasar una URL de devolución de llamada cuando se realiza la autenticación abierta ID, Azure AD, etc.)
esperando que esto es la respuesta más pragmático a la pregunta: Quiero hacer una cadena en un URL usando C# , debe haber algo en el framework .NET que debería ayudar, ¿no?
Sí - dos funciones son útiles para la fabricación de cadenas URL en C#
String.Format
para dar formato a la URLUri.EscapeDataString
para escapar ningún parámetro en la URL
Este código
String.Format("https://site/app/?q={0}&redirectUrl={1}",
Uri.EscapeDataString("search for cats"),
Uri.EscapeDataString("https://mysite/myapp/?state=from idp"))
produce este resultado
https://site/app/?q=search%20for%20cats&redirectUrl=https%3A%2F%2Fmysite%2Fmyapp
que se puede copiar de forma segura y pegar en la barra de direcciones del navegador, o el atributo src
de una etiqueta HTML A
, o utilizar con curl
, o codificada en un código QR, etc.
Y el equivalente de JavaScript sería algo como '" https: // sitio/app /? Q = "+ encodeURIComponent (" búsqueda de gatos ") + "& redirectUrl =" + encodeURIComponent ("https: // mysite/myapp /? state = from idp") 'que produce el mismo resultado. – nothingisnecessary
Como se comentó en la historia aprobada, el método HttpServerUtility.UrlEncode reemplaza los espacios con + en lugar de% 20. Use uno de estos dos métodos en su lugar: Uri.EscapeUriString() o Uri.EscapeDataString()
Código de ejemplo:
HttpUtility.UrlEncode("https://mywebsite.com/api/get me this file.jpg")
//"https%3a%2f%2fmywebsite.com%2fapi%2fget+me+this+file.jpg"
Uri.EscapeUriString("https://mywebsite.com/api/get me this file.jpg");
//"https://mywebsite.com/api/get%20me%20this%20file.jpg"
Uri.EscapeDataString("https://mywebsite.com/api/get me this file.jpg");
//"https%3A%2F%2Fmywebsite.com%2Fapi%2Fget%20me%20this%20file.jpg"
//When your url has a query string:
Uri.EscapeUriString("https://mywebsite.com/api/get?id=123&name=get me this file.jpg");
//"https://mywebsite.com/api/get?id=123&name=get%20me%20this%20file.jpg"
Uri.EscapeDataString("https://mywebsite.com/api/get?id=123&name=get me this file.jpg");
//"https%3A%2F%2Fmywebsite.com%2Fapi%2Fget%3Fid%3D123%26name%3Dget%20me%20this%20file.jpg"
- 1. ¿Cómo reemplazo todos los asteriscos?
- 2. PHP: convertir espacios en cadena en% 20?
- 3. preg_replace todos los espacios
- 4. MySQL reemplazar todos los espacios en blanco con -
- 5. Flex: reemplazar todos los espacios con comas
- 6. Ruby reducir todos los espacios en blanco a espacios individuales
- 7. Eliminar todos los espacios en QGridLayout
- 8. Reemplazar todos los espacios en una cadena con +
- 9. ¿Cómo reemplazo los espacios en blanco con guión bajo y viceversa?
- 10. ¿Cómo reemplazo los corchetes [] con SED
- 11. ¿Por qué HttpUtility.UrlEncode (HttpUtility.UrlDecode ("% 20")) devuelve + en lugar de% 20?
- 12. VS2010 - Los guiones se muestran en todos los espacios
- 13. ^palabra^reemplazo^en todos los partidos en Bash?
- 14. Reemplazar todos los espacios y símbolos especiales con guión en URL usando el lenguaje PHP
- 15. ¿Cómo se corresponden los dígitos 1101004800 con el número 20?
- 16. ¿Los espacios en su URL (% 20) tienen un impacto negativo en SEO?
- 17. cómo reemplazar de forma segura todos los espacios en blanco con guiones bajos con rubí?
- 18. División de una cadena en todos los espacios en blanco
- 19. php Reemplazo de varios espacios con un solo espacio
- 20. jQuery serialize convierte todos los espacios para más
- 21. Eliminar todos los espacios en blanco de un archivo: Linux
- 22. Eliminar todos los espacios en blanco y las líneas vacías
- 23. Insertar espacios en lugar de pestañas en TODOS los archivos
- 24. ¿Cómo deserializo los espacios de nombres XML en C# (System.Xml.Serialization)?
- 25. quita todos los espacios en blanco del texto
- 26. Extracción de todos los espacios en blanco a excepción de ""
- 27. ¿Cuáles son todos los caracteres japoneses de espacios en blanco?
- 28. Compruebe si la cadena está vacía o todos los espacios en C#
- 29. Reemplazar todos los espacios que están dentro de llaves
- 30. C# ¿Cómo usar los espacios blancos del directorio en process.arguements?
Este título de la pregunta no coincide con la pregunta. Para reemplazar todos los espacios con% 20 (el título) en C#, podría usar 'String.Replace (" ","% 20 ")'. Si está construyendo una URL, todo lo que necesita hacer es poner un valor de URL en una cadena: 'string url =" https: // site/app /? Q = cats "' Pero si OP hablaba de pasar una URL como una El parámetro GET forma parte de otra URL que es completamente diferente, que a su vez es diferente de, por ejemplo, emitir una URL en una etiqueta de anclaje HTML en ASP.NET (o lo que sea). – nothingisnecessary