<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Programador ASP &#187; asp</title>
	<atom:link href="http://programadorasp.com/tag/asp/feed/" rel="self" type="application/rss+xml" />
	<link>http://programadorasp.com</link>
	<description>Programación en Internet</description>
	<lastBuildDate>Fri, 03 Feb 2012 20:09:35 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Reemplazar carácteres con expresiones regulares en ASP para generar URL&#8217;s amigables</title>
		<link>http://programadorasp.com/generar-urls-amigables-asp-expresiones-regulares/</link>
		<comments>http://programadorasp.com/generar-urls-amigables-asp-expresiones-regulares/#comments</comments>
		<pubDate>Mon, 18 Apr 2011 19:10:06 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Buscadores]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[acentos]]></category>
		<category><![CDATA[ansi]]></category>
		<category><![CDATA[asp]]></category>
		<category><![CDATA[cadena de texto]]></category>
		<category><![CDATA[carácteres extraños]]></category>
		<category><![CDATA[comillas]]></category>
		<category><![CDATA[expresiones regulares]]></category>
		<category><![CDATA[iso-8859-1]]></category>
		<category><![CDATA[patrón expresión regular]]></category>
		<category><![CDATA[Pattern]]></category>
		<category><![CDATA[permalinks]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[reemplazar carácteres]]></category>
		<category><![CDATA[RegExp]]></category>
		<category><![CDATA[replace]]></category>
		<category><![CDATA[string]]></category>
		<category><![CDATA[tildes]]></category>
		<category><![CDATA[URL friendly]]></category>
		<category><![CDATA[URL's amigables]]></category>
		<category><![CDATA[UTF-8]]></category>

		<guid isPermaLink="false">http://programadorasp.com/?p=503</guid>
		<description><![CDATA[Las expresiones regulares en ASP son muy útiles para reemplazar carácteres extraños en cadenas de texto y quitar acentos para por ejemplo generar url's amigables
Related posts:<ol>
<li><a href='http://programadorasp.com/codificacion-utf-8-incorrecta-php-leyendo-base-datos-mysql/' rel='bookmark' title='Codificación UTF-8 incorrecta en PHP leyendo una base de datos MySQL'>Codificación UTF-8 incorrecta en PHP leyendo una base de datos MySQL</a></li>
<li><a href='http://programadorasp.com/la-world-wide-web-y-el-html-cumplen-20-anos/' rel='bookmark' title='La World Wide Web y el HTML cumplen 20 años'>La World Wide Web y el HTML cumplen 20 años</a></li>
<li><a href='http://programadorasp.com/convertir-archivos-web-estaticos-dinamicos-introducir-codigo/' rel='bookmark' title='Interpretar páginas web estáticas como php, asp o cualquier lenguaje'>Interpretar páginas web estáticas como php, asp o cualquier lenguaje</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>En ocasiones en <strong>ASP</strong> hemos querido <strong>reemplazar carácteres</strong> de un texto o una cadena para eliminar los acentos y los carácteres extraños como paréntesis, puntos, comas, corchetes, ñ, ç,&#8230; Por ejemplo, para generar <strong>URL&#8217;s amigables</strong> para los buscadores (URL friendly o permalinks), necesitamos convertir las cadenas a texto plano <strong>sin carácteres extraños</strong>. Podemos hacer funciones de reemplazo de carácteres intentando tener en cuenta todos los carácteres extraños que nos podamos encontrar en una cadena, pero las <strong>expresiones regulares</strong> y sus herramientas de reemplazo nos pueden ayudar mucho. Se trata de utilizar el operador <strong>.replace</strong> del objeto de expresión regular en ASP, jugando con los <strong>patrones</strong> para las condiciones.</p>
<p>En la funcion siguiente, a partir de una <strong>cadena de texto</strong> dada se convierte a una cadena amigable para los buscadores, eliminando los carácteres extraños. En primer lugar, se eliminan los espacios a ambos lados de la cadena y se reemplazan o eliminan los carácteres que pueden dar problemas en bases de datos como las <strong>comillas</strong> simples y dobles, saltos de línea y espacios. Después se usan las <strong>expresiones regulares</strong> para eliminar de las vocales las tildes abiertas y cerradas, diéresis,&#8230; y para sustituir la ñ y la ç por n y c respectivamente. Es decir, los carácteres que <strong>cumplan el patrón</strong> de la expresión regular serán sustituidos por el carácter dado. Por último, se eliminan los carácteres restantes que <strong>no cumplan el patrón</strong> de URL amigable (letras minúsculas, números y guión).</p>

<div class="wp_syntax"><div class="code"><pre class="asp" style="font-family:monospace;"><span style="color: #0000ff; font-weight: bold;">function</span> convertirAURLfriendly<span style="color: #006600; font-weight:bold;">&#40;</span>cadena<span style="color: #006600; font-weight:bold;">&#41;</span>
  <span style="color: #990099; font-weight: bold;">if</span> <span style="color: #990099; font-weight: bold;">not</span> isNull<span style="color: #006600; font-weight:bold;">&#40;</span>cadena<span style="color: #006600; font-weight:bold;">&#41;</span> <span style="color: #990099; font-weight: bold;">then</span>
    <span style="color: #008000;">' Eliminamos los espacios a ambos lados de la cadena</span>
    strCadena <span style="color: #006600; font-weight: bold;">=</span> <span style="color: #330066;">Trim</span><span style="color: #006600; font-weight:bold;">&#40;</span><span style="color: #330066;">lCase</span><span style="color: #006600; font-weight:bold;">&#40;</span>cadena<span style="color: #006600; font-weight:bold;">&#41;</span><span style="color: #006600; font-weight:bold;">&#41;</span>
    <span style="color: #008000;">' Reemplazamos carácteres especiales</span>
    strCadena <span style="color: #006600; font-weight: bold;">=</span> <span style="color: #330066;">replace</span><span style="color: #006600; font-weight:bold;">&#40;</span><span style="color: #330066;">replace</span><span style="color: #006600; font-weight:bold;">&#40;</span>strCadena,<span style="color: #cc0000;">&quot;'&quot;</span>,<span style="color: #cc0000;">&quot;&quot;</span><span style="color: #006600; font-weight:bold;">&#41;</span>,<span style="color: #cc0000;">&quot;&quot;</span><span style="color: #cc0000;">&quot;&quot;</span>,<span style="color: #cc0000;">&quot;&quot;</span><span style="color: #006600; font-weight:bold;">&#41;</span>
    strCadena <span style="color: #006600; font-weight: bold;">=</span> <span style="color: #330066;">replace</span><span style="color: #006600; font-weight:bold;">&#40;</span><span style="color: #330066;">replace</span><span style="color: #006600; font-weight:bold;">&#40;</span>strCadena,<span style="color: #cc0000;">&quot;&amp;quot;&quot;</span>,<span style="color: #cc0000;">&quot;&quot;</span><span style="color: #006600; font-weight:bold;">&#41;</span>,vbcrlf,<span style="color: #cc0000;">&quot;&quot;</span><span style="color: #006600; font-weight:bold;">&#41;</span>
    strCadena <span style="color: #006600; font-weight: bold;">=</span> <span style="color: #330066;">replace</span><span style="color: #006600; font-weight:bold;">&#40;</span><span style="color: #330066;">replace</span><span style="color: #006600; font-weight:bold;">&#40;</span>strCadena,<span style="color: #cc0000;">&quot;&lt;br&gt;&quot;</span>,<span style="color: #cc0000;">&quot;&quot;</span><span style="color: #006600; font-weight:bold;">&#41;</span>,<span style="color: #cc0000;">&quot; &quot;</span>,<span style="color: #cc0000;">&quot;-&quot;</span><span style="color: #006600; font-weight:bold;">&#41;</span>
    <span style="color: #990099; font-weight: bold;">set</span> expReg <span style="color: #006600; font-weight: bold;">=</span> <span style="color: #0000ff; font-weight: bold;">New</span> RegExp
    <span style="color: #008000;">' Todas las ocurrencias</span>
    expReg.<span style="color: #990099; font-weight: bold;">Global</span> <span style="color: #006600; font-weight: bold;">=</span> <span style="color: #0000ff; font-weight: bold;">True</span>
    expReg.<span style="color: #9900cc;">Pattern</span> <span style="color: #006600; font-weight: bold;">=</span> <span style="color: #cc0000;">&quot;[àáâãäå]&quot;</span>
    strCadena <span style="color: #006600; font-weight: bold;">=</span> expReg.<span style="color: #330066;">Replace</span><span style="color: #006600; font-weight:bold;">&#40;</span>strCadena, <span style="color: #cc0000;">&quot;a&quot;</span><span style="color: #006600; font-weight:bold;">&#41;</span>
    expReg.<span style="color: #9900cc;">Pattern</span> <span style="color: #006600; font-weight: bold;">=</span> <span style="color: #cc0000;">&quot;[èéêë]&quot;</span>
    strCadena <span style="color: #006600; font-weight: bold;">=</span> expReg.<span style="color: #330066;">Replace</span><span style="color: #006600; font-weight:bold;">&#40;</span>strCadena, <span style="color: #cc0000;">&quot;e&quot;</span><span style="color: #006600; font-weight:bold;">&#41;</span>
    expReg.<span style="color: #9900cc;">Pattern</span> <span style="color: #006600; font-weight: bold;">=</span> <span style="color: #cc0000;">&quot;[ìíîï]&quot;</span>
    strCadena <span style="color: #006600; font-weight: bold;">=</span> expReg.<span style="color: #330066;">Replace</span><span style="color: #006600; font-weight:bold;">&#40;</span>strCadena, <span style="color: #cc0000;">&quot;i&quot;</span><span style="color: #006600; font-weight:bold;">&#41;</span>
    expReg.<span style="color: #9900cc;">Pattern</span> <span style="color: #006600; font-weight: bold;">=</span> <span style="color: #cc0000;">&quot;[òóôõö]&quot;</span>
    strCadena <span style="color: #006600; font-weight: bold;">=</span> expReg.<span style="color: #330066;">Replace</span><span style="color: #006600; font-weight:bold;">&#40;</span>strCadena, <span style="color: #cc0000;">&quot;o&quot;</span><span style="color: #006600; font-weight:bold;">&#41;</span>
    expReg.<span style="color: #9900cc;">Pattern</span> <span style="color: #006600; font-weight: bold;">=</span> <span style="color: #cc0000;">&quot;[ùúûü]&quot;</span>
    strCadena <span style="color: #006600; font-weight: bold;">=</span> expReg.<span style="color: #330066;">Replace</span><span style="color: #006600; font-weight:bold;">&#40;</span>strCadena, <span style="color: #cc0000;">&quot;u&quot;</span><span style="color: #006600; font-weight:bold;">&#41;</span>
    expReg.<span style="color: #9900cc;">Pattern</span> <span style="color: #006600; font-weight: bold;">=</span> <span style="color: #cc0000;">&quot;[ñ]&quot;</span>
    strCadena <span style="color: #006600; font-weight: bold;">=</span> expReg.<span style="color: #330066;">Replace</span><span style="color: #006600; font-weight:bold;">&#40;</span>strCadena, <span style="color: #cc0000;">&quot;n&quot;</span><span style="color: #006600; font-weight:bold;">&#41;</span>
    expReg.<span style="color: #9900cc;">Pattern</span> <span style="color: #006600; font-weight: bold;">=</span> <span style="color: #cc0000;">&quot;[ç]&quot;</span>
    strCadena <span style="color: #006600; font-weight: bold;">=</span> expReg.<span style="color: #330066;">Replace</span><span style="color: #006600; font-weight:bold;">&#40;</span>strCadena, <span style="color: #cc0000;">&quot;c&quot;</span><span style="color: #006600; font-weight:bold;">&#41;</span>
    <span style="color: #008000;">' Todo lo que no cumpla este patron</span>
    expReg.<span style="color: #9900cc;">Pattern</span> <span style="color: #006600; font-weight: bold;">=</span> <span style="color: #cc0000;">&quot;[^a-z0-9-]&quot;</span>
    strCadena <span style="color: #006600; font-weight: bold;">=</span> expReg.<span style="color: #330066;">Replace</span><span style="color: #006600; font-weight:bold;">&#40;</span>strCadena, <span style="color: #cc0000;">&quot;&quot;</span><span style="color: #006600; font-weight:bold;">&#41;</span>
    <span style="color: #990099; font-weight: bold;">set</span> expReg <span style="color: #006600; font-weight: bold;">=</span> <span style="color: #0000ff; font-weight: bold;">nothing</span>
    convertirAURLfriendly <span style="color: #006600; font-weight: bold;">=</span> left<span style="color: #006600; font-weight:bold;">&#40;</span>strCadena,<span style="color: #800000;">256</span><span style="color: #006600; font-weight:bold;">&#41;</span>
  <span style="color: #990099; font-weight: bold;">else</span>
    convertirAURLfriendly <span style="color: #006600; font-weight: bold;">=</span> <span style="color: #cc0000;">&quot;&quot;</span>
  <span style="color: #990099; font-weight: bold;">end</span> <span style="color: #990099; font-weight: bold;">if</span>
<span style="color: #990099; font-weight: bold;">end</span> <span style="color: #0000ff; font-weight: bold;">function</span></pre></div></div>

<p>Hacer la conversión de la función anterior a otros lenguajes como <strong>PHP</strong> o <strong>Javascript</strong> es relativamente sencillo, en otros artículos de este blog se pueden encontrar ejemplos de expresiones regulares en Javascript. De hecho, la función anterior an ASP para generar URL&#8217;s amigables me funcionaba en archivos ANSI con codificación iso-8859-1, pero da problemas con los acentos y carácteres extraños cuando el archivo está en <strong>UTF-8</strong>. Así que después de darle muchas vueltas, convertí la función de ASP a Javascript y la llamaba antes de enviar el formulario, es decir generaba la <strong>URL amigable</strong> desde Javascript y lo almacenaba en una variable hidden que también envío con el formulario. La función en <strong>Javascript</strong> que funciona para UTF-8:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">function</span> convertirAURLfriendly<span style="color: #009900;">&#40;</span>str<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  strCadena <span style="color: #339933;">=</span> str<span style="color: #339933;">;</span>
  <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>strCadena<span style="color: #339933;">!=</span><span style="color: #3366CC;">''</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    strCadena <span style="color: #339933;">=</span> strCadena.<span style="color: #660066;">toLowerCase</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #006600; font-style: italic;">// Elimina espacios al principio y al final</span>
    strCadena <span style="color: #339933;">=</span> strCadena.<span style="color: #660066;">replace</span><span style="color: #009900;">&#40;</span><span style="color: #009966; font-style: italic;">/^\s*|\s*$/g</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    strCadena <span style="color: #339933;">=</span> strCadena.<span style="color: #660066;">replace</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;&amp;quot;&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">''</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    strCadena <span style="color: #339933;">=</span> strCadena.<span style="color: #660066;">replace</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot; &quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;-&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">replace</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;_&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;-&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    strExpReg <span style="color: #339933;">=</span> <span style="color: #009966; font-style: italic;">/[àáâãäå]/gi</span><span style="color: #339933;">;</span>
    strCadena <span style="color: #339933;">=</span> strCadena.<span style="color: #660066;">replace</span><span style="color: #009900;">&#40;</span>strExpReg<span style="color: #339933;">,</span><span style="color: #3366CC;">'a'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    strExpReg <span style="color: #339933;">=</span> <span style="color: #009966; font-style: italic;">/[èéêë]/gi</span><span style="color: #339933;">;</span>
    strCadena <span style="color: #339933;">=</span> strCadena.<span style="color: #660066;">replace</span><span style="color: #009900;">&#40;</span>strExpReg<span style="color: #339933;">,</span><span style="color: #3366CC;">'e'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    strExpReg <span style="color: #339933;">=</span> <span style="color: #009966; font-style: italic;">/[ìíîï]/gi</span><span style="color: #339933;">;</span>
    strCadena <span style="color: #339933;">=</span> strCadena.<span style="color: #660066;">replace</span><span style="color: #009900;">&#40;</span>strExpReg<span style="color: #339933;">,</span><span style="color: #3366CC;">'i'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    strExpReg <span style="color: #339933;">=</span> <span style="color: #009966; font-style: italic;">/[òóôõö]/gi</span><span style="color: #339933;">;</span>
    strCadena <span style="color: #339933;">=</span> strCadena.<span style="color: #660066;">replace</span><span style="color: #009900;">&#40;</span>strExpReg<span style="color: #339933;">,</span><span style="color: #3366CC;">'o'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    strExpReg <span style="color: #339933;">=</span> <span style="color: #009966; font-style: italic;">/[ùúûü]/gi</span><span style="color: #339933;">;</span>
    strCadena <span style="color: #339933;">=</span> strCadena.<span style="color: #660066;">replace</span><span style="color: #009900;">&#40;</span>strExpReg<span style="color: #339933;">,</span><span style="color: #3366CC;">'u'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    strExpReg <span style="color: #339933;">=</span> <span style="color: #009966; font-style: italic;">/[ñ]/gi</span><span style="color: #339933;">;</span>
    strCadena <span style="color: #339933;">=</span> strCadena.<span style="color: #660066;">replace</span><span style="color: #009900;">&#40;</span>strExpReg<span style="color: #339933;">,</span><span style="color: #3366CC;">'n'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    strExpReg <span style="color: #339933;">=</span> <span style="color: #009966; font-style: italic;">/[ç]/gi</span><span style="color: #339933;">;</span>
    strCadena <span style="color: #339933;">=</span> strCadena.<span style="color: #660066;">replace</span><span style="color: #009900;">&#40;</span>strExpReg<span style="color: #339933;">,</span><span style="color: #3366CC;">'c'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #006600; font-style: italic;">// Todo lo que no cumpla este patron</span>
    strExpReg <span style="color: #339933;">=</span> <span style="color: #009966; font-style: italic;">/[^a-z0-9-]/gi</span><span style="color: #339933;">;</span>
    strCadena <span style="color: #339933;">=</span> strCadena.<span style="color: #660066;">replace</span><span style="color: #009900;">&#40;</span>strExpReg<span style="color: #339933;">,</span><span style="color: #3366CC;">''</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000066; font-weight: bold;">return</span> strCadena.<span style="color: #660066;">substring</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span><span style="color: #CC0000;">255</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
  <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #3366CC;">''</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Related posts:<ol>
<li><a href='http://programadorasp.com/codificacion-utf-8-incorrecta-php-leyendo-base-datos-mysql/' rel='bookmark' title='Codificación UTF-8 incorrecta en PHP leyendo una base de datos MySQL'>Codificación UTF-8 incorrecta en PHP leyendo una base de datos MySQL</a></li>
<li><a href='http://programadorasp.com/la-world-wide-web-y-el-html-cumplen-20-anos/' rel='bookmark' title='La World Wide Web y el HTML cumplen 20 años'>La World Wide Web y el HTML cumplen 20 años</a></li>
<li><a href='http://programadorasp.com/convertir-archivos-web-estaticos-dinamicos-introducir-codigo/' rel='bookmark' title='Interpretar páginas web estáticas como php, asp o cualquier lenguaje'>Interpretar páginas web estáticas como php, asp o cualquier lenguaje</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://programadorasp.com/generar-urls-amigables-asp-expresiones-regulares/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Codificación UTF-8 incorrecta en PHP leyendo una base de datos MySQL</title>
		<link>http://programadorasp.com/codificacion-utf-8-incorrecta-php-leyendo-base-datos-mysql/</link>
		<comments>http://programadorasp.com/codificacion-utf-8-incorrecta-php-leyendo-base-datos-mysql/#comments</comments>
		<pubDate>Sat, 29 Jan 2011 20:34:44 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Programación]]></category>
		<category><![CDATA[asp]]></category>
		<category><![CDATA[base de datos]]></category>
		<category><![CDATA[carácteres especiales]]></category>
		<category><![CDATA[charset utf-8]]></category>
		<category><![CDATA[CodePage 65001]]></category>
		<category><![CDATA[editor avanzado]]></category>
		<category><![CDATA[encoding UTF-8]]></category>
		<category><![CDATA[formato UTF-8]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[mysql_query]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[problemas de codificación]]></category>
		<category><![CDATA[programación web]]></category>
		<category><![CDATA[pspad]]></category>
		<category><![CDATA[SET NAMES UTF8]]></category>
		<category><![CDATA[solución]]></category>
		<category><![CDATA[text/xml]]></category>
		<category><![CDATA[UTF-8]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://www.programadorasp.com/?p=443</guid>
		<description><![CDATA[Solución al problema de que los carácteres especiales no se muestran bien en un XML devuelto en PHP leyendo de base de datos MySQL con codificación UTF-8.
Related posts:<ol>
<li><a href='http://programadorasp.com/la-world-wide-web-y-el-html-cumplen-20-anos/' rel='bookmark' title='La World Wide Web y el HTML cumplen 20 años'>La World Wide Web y el HTML cumplen 20 años</a></li>
<li><a href='http://programadorasp.com/convertir-archivos-web-estaticos-dinamicos-introducir-codigo/' rel='bookmark' title='Interpretar páginas web estáticas como php, asp o cualquier lenguaje'>Interpretar páginas web estáticas como php, asp o cualquier lenguaje</a></li>
<li><a href='http://programadorasp.com/generar-urls-amigables-asp-expresiones-regulares/' rel='bookmark' title='Reemplazar carácteres con expresiones regulares en ASP para generar URL&#8217;s amigables'>Reemplazar carácteres con expresiones regulares en ASP para generar URL&#8217;s amigables</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>En muchas ocasiones he programado en lenguaje <strong>ASP</strong> páginas que devuelven datos en <strong>XML</strong> leyéndolos de una base de datos <strong>MySQL</strong>. Con el fin de que los datos almacenados en MySQL salgan con el formato correcto, lo mejor es trabajar en <strong>UTF-8</strong>. Para ello, es necesario guardar el archivo ASP que devuelve el XML en <strong>formato UTF-8</strong> desde un editor avanzado gratuito como el <strong><a href="http://programadorasp.com/pspad-potente-editor-de-textos-gratuito-y-en-espanol/" target="_blank">PSPad</a></strong>. Además, hay que poner el siguiente código ASP antes que nada:</p>

<div class="wp_syntax"><div class="code"><pre class="asp" style="font-family:monospace;"><span style="color: #990099; font-weight: bold;">Response</span>.<span style="color: #9900cc;">CodePage</span> <span style="color: #006600; font-weight: bold;">=</span> <span style="color: #cc0000;">&quot;65001&quot;</span>     <span style="color: #008000;">' Comentario: UTF-8</span>
<span style="color: #990099; font-weight: bold;">Response</span>.<span style="color: #330066;">write</span><span style="color: #006600; font-weight:bold;">&#40;</span><span style="color: #cc0000;">&quot;&lt;?xml version=&quot;</span><span style="color: #cc0000;">&quot;1.0&quot;</span><span style="color: #cc0000;">&quot; encoding=&quot;</span><span style="color: #cc0000;">&quot;UTF-8&quot;</span><span style="color: #cc0000;">&quot;?&gt;&quot;</span><span style="color: #006600; font-weight:bold;">&#41;</span></pre></div></div>

<p>Pero cuando intentamos hacer lo mismo en lenguaje <strong>PHP</strong> podemos tener el problema de que los <strong>carácteres especiales</strong> no se muestran bien en pantalla. Haciendo lo mismo que con el ASP, guardando el archivo PHP que devuelve el XML en <strong>formato UTF-8</strong> desde el editor avanzado y poniendo el siguiente código pueden haber problemas:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">header(&quot;Content-type:text/xml; charset=utf-8&quot;);
echo &quot;<span style="color: #000000; font-weight: bold;">&lt;?</span>xml version<span style="color: #339933;">=</span>\<span style="color: #0000ff;">&quot;1.0<span style="color: #000099; font-weight: bold;">\&quot;</span> encoding=<span style="color: #000099; font-weight: bold;">\&quot;</span>utf-8<span style="color: #000099; font-weight: bold;">\&quot;</span> ?&gt;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Según me comentó un colega también <a href="http://www.programadorphp.es/" target="_blank">programador web</a>, parece que la comunicación con la <strong>base de datos MySQL</strong> no se está realizando en <strong>UTF-8</strong>. Para que se realice correctamente, hay que lanzar esta instrucción MySQL antes que nada:</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;">mysql_query<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;SET NAMES UTF8&quot;</span><span style="color: #66cc66;">&#41;</span>;</pre></div></div>

<p>Con esto se solucionan los <strong>problemas de codificación</strong> y los carácteres especiales se muestran bien en la web.</p>
<p>Related posts:<ol>
<li><a href='http://programadorasp.com/la-world-wide-web-y-el-html-cumplen-20-anos/' rel='bookmark' title='La World Wide Web y el HTML cumplen 20 años'>La World Wide Web y el HTML cumplen 20 años</a></li>
<li><a href='http://programadorasp.com/convertir-archivos-web-estaticos-dinamicos-introducir-codigo/' rel='bookmark' title='Interpretar páginas web estáticas como php, asp o cualquier lenguaje'>Interpretar páginas web estáticas como php, asp o cualquier lenguaje</a></li>
<li><a href='http://programadorasp.com/generar-urls-amigables-asp-expresiones-regulares/' rel='bookmark' title='Reemplazar carácteres con expresiones regulares en ASP para generar URL&#8217;s amigables'>Reemplazar carácteres con expresiones regulares en ASP para generar URL&#8217;s amigables</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://programadorasp.com/codificacion-utf-8-incorrecta-php-leyendo-base-datos-mysql/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Interpretar páginas web estáticas como php, asp o cualquier lenguaje</title>
		<link>http://programadorasp.com/convertir-archivos-web-estaticos-dinamicos-introducir-codigo/</link>
		<comments>http://programadorasp.com/convertir-archivos-web-estaticos-dinamicos-introducir-codigo/#comments</comments>
		<pubDate>Sat, 19 Jun 2010 10:21:09 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Administración web]]></category>
		<category><![CDATA[.htaccess]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[asp]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[htm]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[iis]]></category>
		<category><![CDATA[indexación en Google]]></category>
		<category><![CDATA[interpretar asp]]></category>
		<category><![CDATA[interpretar php]]></category>
		<category><![CDATA[pagerank]]></category>
		<category><![CDATA[páginas dinámicas]]></category>
		<category><![CDATA[páginas estáticas]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[redirección 301]]></category>
		<category><![CDATA[servidor web]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.programadorasp.com/?p=354</guid>
		<description><![CDATA[Instrucciones en servidores Apache e IIS para interpretar como PHP o ASP archivos web estáticos con estensiones como .htm, .html, .pdf, .doc
Related posts:<ol>
<li><a href='http://programadorasp.com/la-world-wide-web-y-el-html-cumplen-20-anos/' rel='bookmark' title='La World Wide Web y el HTML cumplen 20 años'>La World Wide Web y el HTML cumplen 20 años</a></li>
<li><a href='http://programadorasp.com/codificacion-utf-8-incorrecta-php-leyendo-base-datos-mysql/' rel='bookmark' title='Codificación UTF-8 incorrecta en PHP leyendo una base de datos MySQL'>Codificación UTF-8 incorrecta en PHP leyendo una base de datos MySQL</a></li>
<li><a href='http://programadorasp.com/seo-enlaces-posicionamiento-eficaz-web-optimizacion-motores-busqueda/' rel='bookmark' title='Posicionamiento en Google sorprendente por menos de 40 euros al mes'>Posicionamiento en Google sorprendente por menos de 40 euros al mes</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>En ocasiones tenemos páginas o secciones de una web con archivos con <strong>extensión .html</strong> (o cualquier otra extensión estática) que quisiéramos convertir a dinámicas para poder introudcir <strong>código php o asp</strong> o cualquier otro lenguaje de servidor. En principio bastaría con cambiar la extensión a .php o .asp, pero muchas veces esas páginas ya están muy <strong>indexadas en Google</strong> y otros buscadores y tendríamos que hacer redirecciones permanentes 301 para no perder las visitas y el <strong>Pagerank</strong>. Podemos hacerlo sin cambiar la extensión del archivo.</p>
<p>Si tenemos un <strong>servidor web Apache</strong>, podemos hacer que todos los archivos con cierta extensión (.htm, .html, o incluso .pdf, .doc,&#8230;) sean interpretados con el motor php, con lo que podremos introducirle código php (instrucciones, includes,&#8230;) poniendo la siguiente línea en el archivo <strong>.htaccess</strong> en la raíz del sitio web:</p>
<pre>AddType application/x-httpd-php .html .htm .pdf .doc</pre>
<p>La línea anterior especifica que serán <strong>interpretados como PHP</strong> todos los archivos con <strong>extensión .htm, .html, .pdf o .doc</strong>. Podemos añadir todas las extensiones que queramos.</p>
<p>Si tenemos un <strong>servidor web IIS</strong> (Microsoft), podemos hacerlo desde el Administrador de Internet Information Services / Equipo local / Propiedades de Sitios Web (si queremos que afecte a todos los sitios) o Propiedades del sitio web seleccionado (si queremos que sólo afecte a un sitio web en particular). En la pestaña Directorio particular / botón Configuración / pestaña Asignaciones podemos Agregar por ejemplo la <strong>extensión .htm</strong> para que sea interpretada por el <strong>motor asp</strong> (C:\windows\system32\inetsrv\asp.dll):</p>
<p style="text-align: center;"><img class="alignnone size-full wp-image-355" title="iis-interpretar-htm-asp" src="http://programadorasp.com/wp-content/uploads/2010/06/iis-interpretar-htm-asp.gif" alt="" width="415" height="448" /></p>
<p>De la misma forma, podemos hacer que sean <strong>interpretados por PHP</strong> (C:\php\php.exe, o la ruta del intérprete o ejecutable PHP).</p>
<p>Related posts:<ol>
<li><a href='http://programadorasp.com/la-world-wide-web-y-el-html-cumplen-20-anos/' rel='bookmark' title='La World Wide Web y el HTML cumplen 20 años'>La World Wide Web y el HTML cumplen 20 años</a></li>
<li><a href='http://programadorasp.com/codificacion-utf-8-incorrecta-php-leyendo-base-datos-mysql/' rel='bookmark' title='Codificación UTF-8 incorrecta en PHP leyendo una base de datos MySQL'>Codificación UTF-8 incorrecta en PHP leyendo una base de datos MySQL</a></li>
<li><a href='http://programadorasp.com/seo-enlaces-posicionamiento-eficaz-web-optimizacion-motores-busqueda/' rel='bookmark' title='Posicionamiento en Google sorprendente por menos de 40 euros al mes'>Posicionamiento en Google sorprendente por menos de 40 euros al mes</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://programadorasp.com/convertir-archivos-web-estaticos-dinamicos-introducir-codigo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>La World Wide Web y el HTML cumplen 20 años</title>
		<link>http://programadorasp.com/la-world-wide-web-y-el-html-cumplen-20-anos/</link>
		<comments>http://programadorasp.com/la-world-wide-web-y-el-html-cumplen-20-anos/#comments</comments>
		<pubDate>Fri, 13 Mar 2009 11:32:01 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Programación]]></category>
		<category><![CDATA[20 aniversario]]></category>
		<category><![CDATA[20 años]]></category>
		<category><![CDATA[asp]]></category>
		<category><![CDATA[CERN]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[http]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[navegador]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[servidor web]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[www]]></category>

		<guid isPermaLink="false">http://www.programadorasp.com/?p=245</guid>
		<description><![CDATA[Hoy viernes 13 de marzo se cumplen 20 años del nacimiento de las páginas web (WWW), tal como las conocemos. El 13 de marzo de 1989 una propuesta presentada por un físico del CERN (Centro Europeo de Investigaciones Nucleares) sentó las bases para desarrollar el lenguaje HTML, que en principio serviría para intercambiar información entre [...]
Related posts:<ol>
<li><a href='http://programadorasp.com/convertir-archivos-web-estaticos-dinamicos-introducir-codigo/' rel='bookmark' title='Interpretar páginas web estáticas como php, asp o cualquier lenguaje'>Interpretar páginas web estáticas como php, asp o cualquier lenguaje</a></li>
<li><a href='http://programadorasp.com/codificacion-utf-8-incorrecta-php-leyendo-base-datos-mysql/' rel='bookmark' title='Codificación UTF-8 incorrecta en PHP leyendo una base de datos MySQL'>Codificación UTF-8 incorrecta en PHP leyendo una base de datos MySQL</a></li>
<li><a href='http://programadorasp.com/generar-urls-amigables-asp-expresiones-regulares/' rel='bookmark' title='Reemplazar carácteres con expresiones regulares en ASP para generar URL&#8217;s amigables'>Reemplazar carácteres con expresiones regulares en ASP para generar URL&#8217;s amigables</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img class="alignnone size-full wp-image-159" title="www_world_wide_web" src="http://tecnologiadelavida.com/files/2009/03/www_world_wide_web.jpg" alt="" width="500" height="65" /></p>
<p>Hoy viernes 13 de marzo se cumplen 20 años del nacimiento de las páginas web (<a href="http://es.wikipedia.org/wiki/World_Wide_Web" target="_blank">WWW</a>), tal como las conocemos. El 13 de marzo de 1989 una propuesta presentada por un físico del <a href="http://www.cern.ch" target="_blank">CERN</a> (<a href="http://es.wikipedia.org/wiki/CERN" target="_blank">Centro Europeo de Investigaciones Nucleares</a>) sentó las bases para desarrollar el lenguaje <a href="http://es.wikipedia.org/wiki/Html" target="_blank">HTML</a>, que en principio serviría para intercambiar información entre físicos de todo el mundo a través de Internet. El lenguaje HTML (HyperText Markup Language) es un lenguaje de etiquetas que permite establecer hipervínculos entre documentos de forma fácil y que los navegadores saben interpretar. Tiempo después vendrían nuevas tecnologías y lenguajes como javascript, flash, asp, php,&#8230;</p>
<div id="attachment_160" class="wp-caption aligncenter" style="width: 389px"><img class="size-full wp-image-160" title="www_primer_servidor_web" src="http://tecnologiadelavida.com/files/2009/03/www_primer_servidor_web.jpg" alt="El creador de la WWW, Tim Berners-Lee junto al ordenador que sirvió de primer servidor web" width="379" height="259" /><p class="wp-caption-text">El creador de la WWW, Tim Berners-Lee, junto al ordenador que sirvió de primer servidor web</p></div>
<p>Pocos se imaginaban que aquel invento iba a revolucionar la tecnología y en el CERN <a href="http://info.cern.ch/www20/" target="_blank">lo están celebrando</a> dando conferencias, haciendo camisetas y exponiendo el primer ordenador que albergó un servidor web, un navegador web y un editor para desarrollar páginas web.</p>
<div id="attachment_161" class="wp-caption aligncenter" style="width: 285px"><img class="size-full wp-image-161" title="www_html" src="http://tecnologiadelavida.com/files/2009/03/www_html.jpg" alt="Ejemplo de documento en lenguaje HTML" width="275" height="313" /><p class="wp-caption-text">Ejemplo de documento en lenguaje HTML</p></div>
<p>Recuerdo mi primer contacto con la web en la Universidad Politécnica de Valencia (España), cuando inicié (y años después acabé) la carrera de Ingeniería Técnica en Informática de Sistemas, allá por el año 1994. En 1995-96 colaboré en el desarrollo de una página web de una asociación de la Universidad y desde la Facultad de Informática programábamos las páginas web con un editor de textos y editor de imágenes básicos&#8230; Escribía el lenguaje HTML totalmente a mano, qué recuerdos, &lt;html&gt;&lt;head&gt;&lt;title&gt;&#8230; &lt;table border=&#8221;0&#8243;&#8230; Empezando de esta forma me ha servido mucho posteriormente, es mucho más fácil encontrar errores y problemas cuando se conoce el código.</p>
<p>Este artículo en una versión menos técnica también lo podéis encontrar en <a href="http://tecnologiadelavida.com/la-web-cumple-20-anos/" target="_blank">Tecnología de la Vida</a>.</p>
<p><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fprogramadorasp.com%2Fla-world-wide-web-y-el-html-cumplen-20-anos%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fprogramadorasp.com%2Fla-world-wide-web-y-el-html-cumplen-20-anos%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><!--<![endif]--><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fprogramadorasp.com%2Fla-world-wide-web-y-el-html-cumplen-20-anos%2F&amp;counturl=http%3A%2F%2Fprogramadorasp.com%2Fla-world-wide-web-y-el-html-cumplen-20-anos%2F&amp;count=horizontal&amp;text=La%20World%20Wide%20Web%20y%20el%20HTML%20cumplen%2020%20a%C3%B1os" scrolling="no" style="border:none;overflow:hidden;width:130px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fprogramadorasp.com%2Fla-world-wide-web-y-el-html-cumplen-20-anos%2F&amp;counturl=http%3A%2F%2Fprogramadorasp.com%2Fla-world-wide-web-y-el-html-cumplen-20-anos%2F&amp;count=horizontal&amp;text=La%20World%20Wide%20Web%20y%20el%20HTML%20cumplen%2020%20a%C3%B1os" scrolling="no" style="border:none;overflow:hidden;width:130px;height:20px"></iframe><!--<![endif]--><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fprogramadorasp.com%2Fla-world-wide-web-y-el-html-cumplen-20-anos%2F&amp;size=medium&amp;count=true" scrolling="no" style="border:none;overflow:hidden;width:90px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fprogramadorasp.com%2Fla-world-wide-web-y-el-html-cumplen-20-anos%2F&amp;size=medium&amp;count=true" scrolling="no" style="border:none;overflow:hidden;width:90px;height:20px"></iframe><!--<![endif]--><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fprogramadorasp.com%2Fla-world-wide-web-y-el-html-cumplen-20-anos%2F&amp;title=La%20World%20Wide%20Web%20y%20el%20HTML%20cumplen%2020%20a%C3%B1os" id="wpa2a_2">Compartir / Guardar</a></p><p>Related posts:<ol>
<li><a href='http://programadorasp.com/convertir-archivos-web-estaticos-dinamicos-introducir-codigo/' rel='bookmark' title='Interpretar páginas web estáticas como php, asp o cualquier lenguaje'>Interpretar páginas web estáticas como php, asp o cualquier lenguaje</a></li>
<li><a href='http://programadorasp.com/codificacion-utf-8-incorrecta-php-leyendo-base-datos-mysql/' rel='bookmark' title='Codificación UTF-8 incorrecta en PHP leyendo una base de datos MySQL'>Codificación UTF-8 incorrecta en PHP leyendo una base de datos MySQL</a></li>
<li><a href='http://programadorasp.com/generar-urls-amigables-asp-expresiones-regulares/' rel='bookmark' title='Reemplazar carácteres con expresiones regulares en ASP para generar URL&#8217;s amigables'>Reemplazar carácteres con expresiones regulares en ASP para generar URL&#8217;s amigables</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://programadorasp.com/la-world-wide-web-y-el-html-cumplen-20-anos/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Evitar la caché de los navegadores al actualizar contenidos web con asp y jscript</title>
		<link>http://programadorasp.com/evitar-la-cache-de-los-navegadores-al-actualizar-contenidos-web-con-asp-y-jscript/</link>
		<comments>http://programadorasp.com/evitar-la-cache-de-los-navegadores-al-actualizar-contenidos-web-con-asp-y-jscript/#comments</comments>
		<pubDate>Mon, 20 Oct 2008 12:50:13 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Programación]]></category>
		<category><![CDATA[asp]]></category>
		<category><![CDATA[caché]]></category>
		<category><![CDATA[flash]]></category>

		<guid isPermaLink="false">http://www.programadorasp.com/?p=95</guid>
		<description><![CDATA[A la hora de mantener y cambiar contenidos de una página web, las cachés de los navegadores pueden jugar malas pasadas a los desarrolladores y diseñadores web, haciendo que los cambios no se reflejen de manera inmediata, sobretodo con contenidos en flash. Las cachés de los navegadores y los proveedores de Internet (como el famoso [...]
Related posts:<ol>
<li><a href='http://programadorasp.com/validar-campos-y-parametros-con-expresiones-regulares-en-asp/' rel='bookmark' title='Validar campos y parámetros con expresiones regulares en ASP'>Validar campos y parámetros con expresiones regulares en ASP</a></li>
<li><a href='http://programadorasp.com/la-world-wide-web-y-el-html-cumplen-20-anos/' rel='bookmark' title='La World Wide Web y el HTML cumplen 20 años'>La World Wide Web y el HTML cumplen 20 años</a></li>
<li><a href='http://programadorasp.com/convertir-archivos-web-estaticos-dinamicos-introducir-codigo/' rel='bookmark' title='Interpretar páginas web estáticas como php, asp o cualquier lenguaje'>Interpretar páginas web estáticas como php, asp o cualquier lenguaje</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>A la hora de mantener y cambiar contenidos de una página web, las cachés de los navegadores pueden jugar malas pasadas a los desarrolladores y diseñadores web, haciendo que los cambios no se reflejen de manera inmediata, sobretodo con contenidos en flash. Las cachés de los navegadores y los proveedores de Internet (como el famoso Proxy-caché de Telefónica) guardan las urls completas para ver si la tienen en caché a la hora de solicitar una página. Así, cuando la caché está activada y un usuario solicita la página http://www.example.com/a.htm, el navegador mira si tiene esa url y archivo en caché y si es así, lo coge de caché y no lo solicita al servidor.</p>
<p>Un truco para evitar que el navegador mire en la caché es pedirle la misma página pero con diferente url, es decir, http://www.example.com/a.htm?1 es una url diferente a http://www.example.com/a.htm?2, pero sin embargo devuelve la misma página. Los parámetros que le pasamos a la página (1 y 2) no son interpretados, con lo que es como si no estuvieran pero hacen que la url sea diferente. Para asegurarse de que el parámetro siempre será diferente, podemos generarlo dinámicamente desde asp o cualquier otro lenguaje y podemos utilizar la función en jscript getTime(), que nos devuelve la cantidad de milisegundos transcurridos desde el 1 de Enero de 1970 hasta el momento actual. De esta manera, podemos generar los enlaces desde páginas asp con esta función:</p>
<pre>&lt;script language="jscript" runat="server"&gt;
function getTime() {
 var d = new Date();
 return d.getTime();
}
&lt;/script&gt;</pre>
<p>y generar el enlace así:</p>
<pre>&lt;a href="http://www.example.com/a.htm<span style="color: #008000;"><strong><span style="color: #ff0000;">?&lt;%=getTime()%&gt;</span>"</strong></span>&gt;Enlace sin cache&lt;/a&gt;</pre>
<p>que se convertiría en algo así:</p>
<pre>&lt;a href="http://www.example.com/a.htm<span style="color: #008000;"><strong><span style="color: #ff0000;">?1224505518887</span>"</strong></span>&gt;Enlace sin cache&lt;/a&gt;</pre>
<p>Este truco es especialmente útil cuando una página contiene un objeto flash. En el ejemplo anterior, llamando a http://www.example.com/a.htm?1224505518887 devuelve el código html actualizado, pero si hay algún objeto flash que queramos actualizar en el interior de la página, esta solución no funciona, ya que la url del objeto flash llamado siempre será la misma. Para resolver esto, hemos de aplicar la variable de tiempo anterior directamente a la llamada al objeto flash:</p>
<pre>&lt;object classid="clsid:d27..."&gt;
  &lt;param name="movie" value="<strong><span style="color: #ff0000;">home.swf?&lt;%=getTime()%&gt;</span>"</strong> /&gt;
  &lt;embed src="<strong><span style="color: #ff0000;">home.swf?&lt;%=getTime()%&gt;</span></strong>" pluginspage... /&gt;
&lt;/object&gt;</pre>
<p>quedando algo así:</p>
<pre>&lt;object classid="clsid:d27..."&gt;
  &lt;param name="movie" value="<span style="color: #ff0000;"><strong>home.swf?1224505518887</strong></span>" /&gt;
  &lt;embed src="<span style="color: #ff0000;"><strong>home.swf?1224505518887</strong></span>" pluginspage... /&gt;
&lt;/object&gt;</pre>
<p>y lo guardamos como asp con la funcion jscript getTime definida. De esta manera nos aseguramos que el objeto flash será leído del servidor sin pasar por la caché sin necesidad de cambiarle el nombre al archivo. Después, simplemente hay que llamar a la página http://www.example.com/a.asp, sin la variable de tiempo, porque ya se genera en el código de la página y lo que realmente nos interesa actualizar es el objeto flash.</p>
<p>Este tipo de solución también se puede utilizar para refrescar la página cada ciertos segundos, como una página que visualice una webcam que actualiza las imágenes por FTP cada x segundos.</p>
<p><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fprogramadorasp.com%2Fevitar-la-cache-de-los-navegadores-al-actualizar-contenidos-web-con-asp-y-jscript%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fprogramadorasp.com%2Fevitar-la-cache-de-los-navegadores-al-actualizar-contenidos-web-con-asp-y-jscript%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><!--<![endif]--><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fprogramadorasp.com%2Fevitar-la-cache-de-los-navegadores-al-actualizar-contenidos-web-con-asp-y-jscript%2F&amp;counturl=http%3A%2F%2Fprogramadorasp.com%2Fevitar-la-cache-de-los-navegadores-al-actualizar-contenidos-web-con-asp-y-jscript%2F&amp;count=horizontal&amp;text=Evitar%20la%20cach%C3%A9%20de%20los%20navegadores%20al%20actualizar%20contenidos%20web%20con%20asp%20y%20jscript" scrolling="no" style="border:none;overflow:hidden;width:130px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fprogramadorasp.com%2Fevitar-la-cache-de-los-navegadores-al-actualizar-contenidos-web-con-asp-y-jscript%2F&amp;counturl=http%3A%2F%2Fprogramadorasp.com%2Fevitar-la-cache-de-los-navegadores-al-actualizar-contenidos-web-con-asp-y-jscript%2F&amp;count=horizontal&amp;text=Evitar%20la%20cach%C3%A9%20de%20los%20navegadores%20al%20actualizar%20contenidos%20web%20con%20asp%20y%20jscript" scrolling="no" style="border:none;overflow:hidden;width:130px;height:20px"></iframe><!--<![endif]--><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fprogramadorasp.com%2Fevitar-la-cache-de-los-navegadores-al-actualizar-contenidos-web-con-asp-y-jscript%2F&amp;size=medium&amp;count=true" scrolling="no" style="border:none;overflow:hidden;width:90px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fprogramadorasp.com%2Fevitar-la-cache-de-los-navegadores-al-actualizar-contenidos-web-con-asp-y-jscript%2F&amp;size=medium&amp;count=true" scrolling="no" style="border:none;overflow:hidden;width:90px;height:20px"></iframe><!--<![endif]--><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fprogramadorasp.com%2Fevitar-la-cache-de-los-navegadores-al-actualizar-contenidos-web-con-asp-y-jscript%2F&amp;title=Evitar%20la%20cach%C3%A9%20de%20los%20navegadores%20al%20actualizar%20contenidos%20web%20con%20asp%20y%20jscript" id="wpa2a_4">Compartir / Guardar</a></p><p>Related posts:<ol>
<li><a href='http://programadorasp.com/validar-campos-y-parametros-con-expresiones-regulares-en-asp/' rel='bookmark' title='Validar campos y parámetros con expresiones regulares en ASP'>Validar campos y parámetros con expresiones regulares en ASP</a></li>
<li><a href='http://programadorasp.com/la-world-wide-web-y-el-html-cumplen-20-anos/' rel='bookmark' title='La World Wide Web y el HTML cumplen 20 años'>La World Wide Web y el HTML cumplen 20 años</a></li>
<li><a href='http://programadorasp.com/convertir-archivos-web-estaticos-dinamicos-introducir-codigo/' rel='bookmark' title='Interpretar páginas web estáticas como php, asp o cualquier lenguaje'>Interpretar páginas web estáticas como php, asp o cualquier lenguaje</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://programadorasp.com/evitar-la-cache-de-los-navegadores-al-actualizar-contenidos-web-con-asp-y-jscript/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Validar campos y parámetros con expresiones regulares en ASP</title>
		<link>http://programadorasp.com/validar-campos-y-parametros-con-expresiones-regulares-en-asp/</link>
		<comments>http://programadorasp.com/validar-campos-y-parametros-con-expresiones-regulares-en-asp/#comments</comments>
		<pubDate>Thu, 16 Oct 2008 07:12:40 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Programación]]></category>
		<category><![CDATA[asp]]></category>
		<category><![CDATA[expresiones regulares]]></category>
		<category><![CDATA[formularios web]]></category>
		<category><![CDATA[RegExLib]]></category>
		<category><![CDATA[sql inyectado]]></category>
		<category><![CDATA[validar campos]]></category>

		<guid isPermaLink="false">http://www.programadorasp.com/?p=69</guid>
		<description><![CDATA[Las expresiones regulares en programación son útiles para validar campos enviados y parámetros recibidos de formularios web en lenguaje ASP o Javascript.
Related posts:<ol>
<li><a href='http://programadorasp.com/validar-fechas-con-expresiones-regulares-en-asp-y-javascrip/' rel='bookmark' title='Validar fechas con expresiones regulares en ASP y Javascript'>Validar fechas con expresiones regulares en ASP y Javascript</a></li>
<li><a href='http://programadorasp.com/validar-direcciones-de-e-mail-con-expresiones-regulares-en-asp-y-javascript/' rel='bookmark' title='Validar direcciones de e-mail con expresiones regulares en ASP y Javascript'>Validar direcciones de e-mail con expresiones regulares en ASP y Javascript</a></li>
<li><a href='http://programadorasp.com/validar-direcciones-de-internet-o-urls-con-expresiones-regulares-en-javascript/' rel='bookmark' title='Validar direcciones de Internet o URL&#8217;s con expresiones regulares en Javascript'>Validar direcciones de Internet o URL&#8217;s con expresiones regulares en Javascript</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Las <a href="http://es.wikipedia.org/wiki/Expresi%C3%B3n_regular" target="_blank">expresiones regulares</a> en programación son muy útiles para validar campos enviados y parámetros recibidos de formularios web, ya sean de contacto, usuario y contraseña o de cualquier otro tipo. Es cierto que las expresiones regulares pueden ser muy complejas, pero con algunos ejemplos sencillos y un poco de práctica podemos apreciar su verdadera potencia. En el mercado existen muchas soluciones predefinidas para no tener que ir validando manualmente los parámetros y &#8220;parseando&#8221; las entradas, pero hace tiempo que yo vengo utilizando algunas funciones propias que de forma sencilla evitan el tan temido <a href="http://es.wikipedia.org/wiki/Inyecci%C3%B3n_SQL" target="_blank">SQL inyectado</a>. En ASP es muy fácil utilizar expresiones regulares. Por ejemplo, para validar cadenas numéricas y alfanuméricas, utilizo estas dos funciones:</p>

<div class="wp_syntax"><div class="code"><pre class="asp" style="font-family:monospace;"><span style="color: #0000ff; font-weight: bold;">function</span> esValidoNum<span style="color: #006600; font-weight:bold;">&#40;</span>cadena<span style="color: #006600; font-weight:bold;">&#41;</span>
  <span style="color: #990099; font-weight: bold;">set</span> expReg <span style="color: #006600; font-weight: bold;">=</span> <span style="color: #0000ff; font-weight: bold;">New</span> RegExp
  expReg.<span style="color: #9900cc;">Pattern</span> <span style="color: #006600; font-weight: bold;">=</span> <span style="color: #cc0000;">&quot;^[0-9]+$&quot;</span>
  esValidoNum <span style="color: #006600; font-weight: bold;">=</span> expReg.<span style="color: #9900cc;">Test</span><span style="color: #006600; font-weight:bold;">&#40;</span>cadena<span style="color: #006600; font-weight:bold;">&#41;</span> <span style="color: #0000ff; font-weight: bold;">and</span> <span style="color: #330066;">len</span><span style="color: #006600; font-weight:bold;">&#40;</span>cadena<span style="color: #006600; font-weight:bold;">&#41;</span> <span style="color: #006600; font-weight: bold;">&amp;</span>lt<span style="color: #006600; font-weight: bold;">;</span> <span style="color: #800000;">6</span>
  <span style="color: #990099; font-weight: bold;">set</span> expReg <span style="color: #006600; font-weight: bold;">=</span> <span style="color: #0000ff; font-weight: bold;">nothing</span>
<span style="color: #990099; font-weight: bold;">end</span> <span style="color: #0000ff; font-weight: bold;">function</span>
&nbsp;
<span style="color: #0000ff; font-weight: bold;">function</span> esValidoAlfaNum<span style="color: #006600; font-weight:bold;">&#40;</span>cadena<span style="color: #006600; font-weight:bold;">&#41;</span>
  <span style="color: #990099; font-weight: bold;">set</span> expReg <span style="color: #006600; font-weight: bold;">=</span> <span style="color: #0000ff; font-weight: bold;">New</span> RegExp
  expReg.<span style="color: #9900cc;">Pattern</span> <span style="color: #006600; font-weight: bold;">=</span> <span style="color: #cc0000;">&quot;^[a-zA-Z0-9-]+$&quot;</span>
  esValidoAlfaNum <span style="color: #006600; font-weight: bold;">=</span> expReg.<span style="color: #9900cc;">Test</span><span style="color: #006600; font-weight:bold;">&#40;</span>cadena<span style="color: #006600; font-weight:bold;">&#41;</span> <span style="color: #0000ff; font-weight: bold;">and</span> <span style="color: #330066;">len</span><span style="color: #006600; font-weight:bold;">&#40;</span>cadena<span style="color: #006600; font-weight:bold;">&#41;</span> <span style="color: #006600; font-weight: bold;">&amp;</span>lt<span style="color: #006600; font-weight: bold;">;</span> <span style="color: #800000;">256</span>
  <span style="color: #990099; font-weight: bold;">set</span> expReg <span style="color: #006600; font-weight: bold;">=</span> <span style="color: #0000ff; font-weight: bold;">nothing</span>
<span style="color: #990099; font-weight: bold;">end</span> <span style="color: #0000ff; font-weight: bold;">function</span></pre></div></div>

<p>Como norma general, en primer lugar se declara la variable que tendrá la expresión regular y se le especifica el patrón a seguir mediante los diferentes símbolos:</p>
<p>^ : comienzo de la expresión regular<br />
$ : fin de la expresión regular<br />
+ : utilizado para especificar una o más apariciones de los símbolos precedentes<br />
[...] : rango</p>
<p>Así pues en el primer ejemplo anterior se validan expresiones numéricas, es decir, una o más repeticiones de números entre 0 y 9, y de longitud menor que 6 (len(cadena)&lt;6), mientras que en el segundo se validan cadenas alfanuméricas (sin acentos, ñ, ç,&#8230;), es decir, una o más repeticiones de letras minúsculas entre a y z, mayúsculas entre A y Z, números entre 0 y 9 y guiones (-), y de longitud menor de 256 carácteres (len(cadena)&lt;256).</p>
<p>Con estas simples pero potentes funciones podemos validar usuarios y contraseñas y parámetros sencillos pasados por GET o POST como id&#8217;s, cadenas simples,&#8230;</p>
<p>En todos los lenguajes existen las expresiones regulares y el uso es bastante similar. De hecho, en Javascript es muy fácil utilizar las funciones para validar los campos en el cliente antes de enviar el formulario web.</p>
<p>Se pueden encontrar expresiones regulares predefinidas para validar e-mails, teléfonos, fechas, horas,&#8230; en <a href="http://regexlib.com" target="_blank">RegExLib</a>, una web muy útil.</p>
<p>Related posts:<ol>
<li><a href='http://programadorasp.com/validar-fechas-con-expresiones-regulares-en-asp-y-javascrip/' rel='bookmark' title='Validar fechas con expresiones regulares en ASP y Javascript'>Validar fechas con expresiones regulares en ASP y Javascript</a></li>
<li><a href='http://programadorasp.com/validar-direcciones-de-e-mail-con-expresiones-regulares-en-asp-y-javascript/' rel='bookmark' title='Validar direcciones de e-mail con expresiones regulares en ASP y Javascript'>Validar direcciones de e-mail con expresiones regulares en ASP y Javascript</a></li>
<li><a href='http://programadorasp.com/validar-direcciones-de-internet-o-urls-con-expresiones-regulares-en-javascript/' rel='bookmark' title='Validar direcciones de Internet o URL&#8217;s con expresiones regulares en Javascript'>Validar direcciones de Internet o URL&#8217;s con expresiones regulares en Javascript</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://programadorasp.com/validar-campos-y-parametros-con-expresiones-regulares-en-asp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

