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, "À", "À") '- capital a, grave accent
aux = Replace(aux, "Á", "Á") '- capital a, acute accent
aux = Replace(aux, "Â", "Â") '- capital a, circumflex accent
aux = Replace(aux, "Ã", "Ã") '- capital a, tilde
aux = Replace(aux, "Ä", "Ä") '- capital a, umlaut mark
aux = Replace(aux, "Å", "Å") '- capital a, ring
aux = Replace(aux, "Æ", "Æ") '- capital ae
aux = Replace(aux, "Ç", "Ç") '- capital c, cedilla
aux = Replace(aux, "È", "È") '- capital e, grave accent
aux = Replace(aux, "É", "É") '- capital e, acute accent
aux = Replace(aux, "Ê", "Ê") '- capital e, circumflex accent
aux = Replace(aux, "Ë", "Ë") '- capital e, umlaut mark
aux = Replace(aux, "Ì", "Ì") '- capital i, grave accent
aux = Replace(aux, "Í", "Í") '- capital i, acute accent
aux = Replace(aux, "Î", "Î") '- capital i, circumflex accent
aux = Replace(aux, "Ï", "Ï") '- capital i, umlaut mark
aux = Replace(aux, "Ð", "Ð") '- capital eth, Icelandic
aux = Replace(aux, "Ñ", "Ñ") '- capital n, tilde
aux = Replace(aux, "Ò", "Ò") '- capital o, grave accent
aux = Replace(aux, "Ó", "Ó") '- capital o, acute accent
aux = Replace(aux, "Ô", "Ô") '- capital o, circumflex accent
aux = Replace(aux, "Õ", "Õ") '- capital o, tilde
aux = Replace(aux, "Ö", "Ö") '- capital o, umlaut mark
aux = Replace(aux, "Ø", "Ø") '- capital o, slash
aux = Replace(aux, "Ù", "Ù") '- capital u, grave accent
aux = Replace(aux, "Ú", "Ú") '- capital u, acute accent
aux = Replace(aux, "Û", "Û") '- capital u, circumflex accent
aux = Replace(aux, "Ü", "Ü") '- capital u, umlaut mark
aux = Replace(aux, "Ý", "Ý") '- capital y, acute accent
aux = Replace(aux, "Þ", "Þ") '- capital THORN, Icelandic
aux = Replace(aux, "ß", "ß") '- small sharp s, German
aux = Replace(aux, "à", "à") '- small a, grave accent
aux = Replace(aux, "á", "á") '- small a, acute accent
aux = Replace(aux, "â", "â") '- small a, circumflex accent
aux = Replace(aux, "ã", "ã") '- small a, tilde
aux = Replace(aux, "ä", "ä") '- small a, umlaut mark
aux = Replace(aux, "å", "å") '- small a, ring
aux = Replace(aux, "æ", "æ") '- small ae
aux = Replace(aux, "ç", "ç") '- small c, cedilla
aux = Replace(aux, "è", "è") '- small e, grave accent
aux = Replace(aux, "é", "é") '- small e, acute accent
aux = Replace(aux, "ê", "ê") '- small e, circumflex accent
aux = Replace(aux, "ë", "ë") '- small e, umlaut mark
aux = Replace(aux, "ì", "ì") '- small i, grave accent
aux = Replace(aux, "í", "í") '- small i, acute accent
aux = Replace(aux, "î", "î") '- small i, circumflex accent
aux = Replace(aux, "ï", "ï") '- small i, umlaut mark
aux = Replace(aux, "ð", "ð") '- small eth, Icelandic
aux = Replace(aux, "ñ", "ñ") '- small n, tilde
aux = Replace(aux, "ò", "ò") '- small o, grave accent
aux = Replace(aux, "ó", "ó") '- small o, acute accent
aux = Replace(aux, "ô", "ô") '- small o, circumflex accent
aux = Replace(aux, "õ", "õ") '- small o, tilde
aux = Replace(aux, "ö", "ö") '- small o, umlaut mark
aux = Replace(aux, "ø", "ø") '- small o, slash
aux = Replace(aux, "ù", "ù") '- small u, grave accent
aux = Replace(aux, "ú", "ú") '- small u, acute accent
aux = Replace(aux, "û", "û") '- small u, circumflex accent
aux = Replace(aux, "ü", "ü") '- small u, umlaut mark
aux = Replace(aux, "ý", "ý") '- small y, acute accent
aux = Replace(aux, "þ", "þ") '- small thorn, Icelandic
aux = Replace(aux, "ÿ", "ÿ") '- small y, umlaut mark
aux = Replace(aux, "¡", "¡") '- inverted exclamation mark
aux = Replace(aux, "¢", "¢") '- cent
aux = Replace(aux, "£", "£") '- pound
aux = Replace(aux, "¤", "¤") '- currency
aux = Replace(aux, "¥", "¥") '- yen
aux = Replace(aux, "¦", "¦") '- broken vertical bar
aux = Replace(aux, "§", "§") '- section
aux = Replace(aux, "¨", "¨") '- spacing diaeresis
aux = Replace(aux, "©", "©") '- copyright
aux = Replace(aux, "ª", "ª") '- feminine ordinal indicator
aux = Replace(aux, "«", "«") '- angle quotation mark (left)
aux = Replace(aux, "¬", "¬") '- negation
aux = Replace(aux, "®", "®") '- registered trademark
aux = Replace(aux, "¯", "¯") '- spacing macron
aux = Replace(aux, "°", "°") '- degree
aux = Replace(aux, "±", "±") '- plus-or-minus
aux = Replace(aux, "²", "²") '- superscript 2
aux = Replace(aux, "³", "³") '- superscript 3
aux = Replace(aux, "´", "´") '- spacing acute
aux = Replace(aux, "µ", "µ") '- micro
aux = Replace(aux, "¶", "¶") '- paragraph
aux = Replace(aux, "·", "·") '- middle dot
aux = Replace(aux, "¸", "¸") '- spacing cedilla
aux = Replace(aux, "¹", "¹") '- superscript 1
aux = Replace(aux, "º", "º") '- masculine ordinal indicator
aux = Replace(aux, "»", "»") '- angle quotation mark (right)
aux = Replace(aux, "¼", "¼") '- fraction 1/4
aux = Replace(aux, "½", "½") '- fraction 1/2
aux = Replace(aux, "¾", "¾") '- fraction 3/4
aux = Replace(aux, "¿", "¿")
aux = Replace(aux, "×", "×")
aux = Replace(aux, "÷", "÷") '-
Remplaza = aux
End Function
|