Ver Mensaje Individual
  #5 (permalink)  
Antiguo 16/12/2009, 18:24
jose_cab
 
Fecha de Ingreso: noviembre-2008
Ubicación: Barcelona
Mensajes: 52
Antigüedad: 16 años, 5 meses
Puntos: 0
Respuesta: Problemas al escribir en fichero con WriteLine !! Me supera

Hola Myakire. Ante todo muchas gracias por tu ayuda.

Esto sigue sin funcionar correctamente. Hoy llevo varias horas con esto y no consigo que funcione. Si que se muestra perfectamente en pantalla pero al escribirlo en un fichero sigue con el mismo problema.

Me estoy atascando y tengo que resolverlo con urgencia, pues tiene que empezar a funcionar ya, pero me empieza a superar esta tontería. Piensa que tengo que leer casi 20.000 fichas similares... Leo estas fichas según una base de datos, todo es correcto pero se atasca en algunas como la del ejemplo y me para el proceso.

He utilizado la función que comentas para salir del paso y ya lo mejoraré pero no funciona. Incluso, primero lo que hago es pasarlo a ISO-88591 para que me sea compatible con mi sistema y luego remplazar con la función. (Se ve perfecto si se imprime en pantalla) pero el fichero da un error si se intenta escribir.

Puedes si quieres pegar el código y comprobar lo que comento.

Adjunto el código completo

Código:
path_file = "F:\DATOS\PUBLI06\fichas\"
name_file = "prueba.htm"
strURL_ES = "http://prf.icecat.biz/index.cgi?prod_id=301192EK;vendor=LACIE;lang=ES;shopname=OpenICEcat-url#"
'strURL_ES = "http://prf.icecat.biz/index.cgi?prod_id=3093B003AA;vendor=CANON;lang=ES;shopname=OpenICEcat-url#"
			
Set HttpObj_ES = Server.CreateObject("WinHttp.WinHttpRequest.5.1") 
'HttpObj_ES.SetTimeouts 50000, 60000, 10000, 100000 
HttpObj_ES.Open "GET", strURL_ES, false 
HttpObj_ES.Send() 
Text_Ficha_ES = HttpObj_ES.ResponseText
Set HttpObj_ES = Nothing
'
'-- Creamos el fichero
'
Set fs_ES = CreateObject("Scripting.FileSystemObject") 	' Creamos el Fichero
Set file_ES = fs_ES.CreateTextFile(path_file & name_file,True)	' Abrimos el Fichero
Text_Ficha_ES = DecodeUTF8(Text_Ficha_ES)
Text_Ficha_ES = Remplaza(Text_Ficha_ES)

'file_ES.WriteLine(Text_Ficha_ES)		' Escribimos en el fichero				
Response.Write(Text_Ficha_ES) 			' Mostramos la ficha en pantalla
file_ES.Close
Set file_ES = Nothing
Set fs_ES = Nothing

'--------------------------------
'-- Decodificador de UTF-8 a ISO-8859-1 
'--------------------------------
	function DecodeUTF8(s)
	  dim i
	  dim c
	  dim n

	  i = 1
	  do while i < len(s)
	    c = asc(mid(s,i,1))
	    if c and &H80 then
	      n = 1
	      do while i + n < len(s)
	        if (asc(mid(s,i+n,1)) and &HC0) <> &H80 then
	          exit do
	        end if
	        n = n + 1
	      loop
	      if n = 2 and ((c and &HE0) = &HC0) then
	        c = asc(mid(s,i+1,1)) + &H40 * (c and &H01)
	      else
	        c = 191 
	      end if
	      s = left(s,i-1) + chr(c) + mid(s,i+n)
	    end if
	    i = i + 1
	  loop
	  DecodeUTF8 = s 
	end function	
'--------------------------------
Function Remplaza(Cadena)
    aux = Cadena
    aux = Replace(aux, "À", "&Agrave;")  '-   capital a, grave accent 
    aux = Replace(aux, "Á", "&Aacute;")  '-   capital a, acute accent 
    aux = Replace(aux, "Â", "&Acirc;")  '-   capital a, circumflex accent 
    aux = Replace(aux, "Ã", "&Atilde;")  '-   capital a, tilde 
    aux = Replace(aux, "Ä", "&Auml;")  '-   capital a, umlaut mark 
    aux = Replace(aux, "Å", "&Aring;")  '-   capital a, ring 
    aux = Replace(aux, "Æ", "&AElig;")  '-   capital ae 
    aux = Replace(aux, "Ç", "&Ccedil;")  '-   capital c, cedilla 
    aux = Replace(aux, "È", "&Egrave;")  '-   capital e, grave accent 
    aux = Replace(aux, "É", "&Eacute;")  '-   capital e, acute accent 
    aux = Replace(aux, "Ê", "&Ecirc;")  '-   capital e, circumflex accent 
    aux = Replace(aux, "Ë", "&Euml;")  '-   capital e, umlaut mark 
    aux = Replace(aux, "Ì", "&Igrave;")  '-   capital i, grave accent 
    aux = Replace(aux, "Í", "&Iacute;")  '-   capital i, acute accent 
    aux = Replace(aux, "Î", "&Icirc;")  '-   capital i, circumflex accent 
    aux = Replace(aux, "Ï", "&Iuml;")  '-   capital i, umlaut mark 
    aux = Replace(aux, "Ð", "&ETH;")  '-   capital eth, Icelandic 
    aux = Replace(aux, "Ñ", "&Ntilde;")  '-   capital n, tilde 
    aux = Replace(aux, "Ò", "&Ograve;")  '-   capital o, grave accent 
    aux = Replace(aux, "Ó", "&Oacute;")  '-   capital o, acute accent 
    aux = Replace(aux, "Ô", "&Ocirc;")  '-   capital o, circumflex accent 
    aux = Replace(aux, "Õ", "&Otilde;")  '-   capital o, tilde 
    aux = Replace(aux, "Ö", "&Ouml;")  '-   capital o, umlaut mark 
    aux = Replace(aux, "Ø", "&Oslash;")  '-   capital o, slash 
    aux = Replace(aux, "Ù", "&Ugrave;")  '-   capital u, grave accent 
    aux = Replace(aux, "Ú", "&Uacute;")  '-   capital u, acute accent 
    aux = Replace(aux, "Û", "&Ucirc;")  '-   capital u, circumflex accent 
    aux = Replace(aux, "Ü", "&Uuml;")  '-   capital u, umlaut mark 
    aux = Replace(aux, "Ý", "&Yacute;")  '-   capital y, acute accent 
    aux = Replace(aux, "Þ", "&THORN;")  '-   capital THORN, Icelandic 
    aux = Replace(aux, "ß", "&szlig;")  '-   small sharp s, German 
    aux = Replace(aux, "à", "&agrave;")  '-   small a, grave accent 
    aux = Replace(aux, "á", "&aacute;")  '-   small a, acute accent 
    aux = Replace(aux, "â", "&acirc;")  '-   small a, circumflex accent 
    aux = Replace(aux, "ã", "&atilde;")  '-   small a, tilde 
    aux = Replace(aux, "ä", "&auml;")  '-   small a, umlaut mark 
    aux = Replace(aux, "å", "&aring;")  '-   small a, ring 
    aux = Replace(aux, "æ", "&aelig;")  '-   small ae 
    aux = Replace(aux, "ç", "&ccedil;")  '-   small c, cedilla 
    aux = Replace(aux, "è", "&egrave;")  '-   small e, grave accent 
    aux = Replace(aux, "é", "&eacute;")  '-   small e, acute accent 
    aux = Replace(aux, "ê", "&ecirc;")  '-   small e, circumflex accent 
    aux = Replace(aux, "ë", "&euml;")  '-   small e, umlaut mark 
    aux = Replace(aux, "ì", "&igrave;")  '-   small i, grave accent 
    aux = Replace(aux, "í", "&iacute;")  '-   small i, acute accent 
    aux = Replace(aux, "î", "&icirc;")  '-   small i, circumflex accent 
    aux = Replace(aux, "ï", "&iuml;")  '-   small i, umlaut mark 
    aux = Replace(aux, "ð", "&eth;")  '-   small eth, Icelandic 
    aux = Replace(aux, "ñ", "&ntilde;")  '-   small n, tilde 
    aux = Replace(aux, "ò", "&ograve;")  '-   small o, grave accent 
    aux = Replace(aux, "ó", "&oacute;")  '-   small o, acute accent 
    aux = Replace(aux, "ô", "&ocirc;")  '-   small o, circumflex accent 
    aux = Replace(aux, "õ", "&otilde;")  '-   small o, tilde 
    aux = Replace(aux, "ö", "&ouml;")  '-   small o, umlaut mark 
    aux = Replace(aux, "ø", "&oslash;")  '-   small o, slash 
    aux = Replace(aux, "ù", "&ugrave;")  '-   small u, grave accent 
    aux = Replace(aux, "ú", "&uacute;")  '-   small u, acute accent 
    aux = Replace(aux, "û", "&ucirc;")  '-   small u, circumflex accent 
    aux = Replace(aux, "ü", "&uuml;")  '-   small u, umlaut mark 
    aux = Replace(aux, "ý", "&yacute;")  '-   small y, acute accent 
    aux = Replace(aux, "þ", "&thorn;")  '-   small thorn, Icelandic 
    aux = Replace(aux, "ÿ", "&yuml;")  '-   small y, umlaut mark 
    aux = Replace(aux, "¡", "&iexcl;")  '-   inverted exclamation mark 
    aux = Replace(aux, "¢", "&cent;")  '-   cent 
    aux = Replace(aux, "£", "&pound;")  '-   pound 
    aux = Replace(aux, "¤", "&curren;")  '-   currency 
    aux = Replace(aux, "¥", "&yen;")  '-   yen 
    aux = Replace(aux, "¦", "&brvbar;")  '-   broken vertical bar 
    aux = Replace(aux, "§", "&sect;")  '-   section 
    aux = Replace(aux, "¨", "&uml;")  '-   spacing diaeresis 
    aux = Replace(aux, "©", "&copy;")  '-   copyright 
    aux = Replace(aux, "ª", "&ordf;")  '-   feminine ordinal indicator 
    aux = Replace(aux, "«", "&laquo;")  '-   angle quotation mark (left) 
    aux = Replace(aux, "¬", "&not;")  '-   negation 
    aux = Replace(aux, "®", "&reg;")  '-   registered trademark 
    aux = Replace(aux, "¯", "&macr;")  '-   spacing macron 
    aux = Replace(aux, "°", "&deg;")  '-   degree 
    aux = Replace(aux, "±", "&plusmn;")  '-   plus-or-minus  
    aux = Replace(aux, "²", "&sup2;")  '-   superscript 2 
    aux = Replace(aux, "³", "&sup3;")  '-   superscript 3 
    aux = Replace(aux, "´", "&acute;")  '-   spacing acute 
    aux = Replace(aux, "µ", "&micro;")  '-   micro 
    aux = Replace(aux, "¶", "&para;")  '-   paragraph 
    aux = Replace(aux, "·", "&middot;")  '-   middle dot 
    aux = Replace(aux, "¸", "&cedil;")  '-   spacing cedilla 
    aux = Replace(aux, "¹", "&sup1;")  '-   superscript 1 
    aux = Replace(aux, "º", "&ordm;")  '-   masculine ordinal indicator 
    aux = Replace(aux, "»", "&raquo;")  '-   angle quotation mark (right) 
    aux = Replace(aux, "¼", "&frac14;")  '-   fraction 1/4 
    aux = Replace(aux, "½", "&frac12;")  '-   fraction 1/2 
    aux = Replace(aux, "¾", "&frac34;")  '-   fraction 3/4 
    aux = Replace(aux, "¿", "&iquest;")
    aux = Replace(aux, "×", "&times;")
    aux = Replace(aux, "÷", "&divide;")  '- 
        Remplaza = aux
End Function