Este artículo presenta principalmente la solución al desbordamiento de memoria de consultas difusas de ASP en ACCESS. El motivo de este problema es el problema de codificación de caracteres, que se resuelve mediante el uso de una función de transcodificación. Los amigos que lo necesiten pueden consultar lo siguiente.
Hoy, mientras realizaba el mantenimiento diario de un sitio web, descubrí que el programa de mensajes del sitio web no se sometió a una verificación y filtrado estrictos, lo que generó casi 100.000 datos basura. Contiene mucha información importante, lo que requiere limpiar los datos y agregar medidas de verificación más estrictas.
Sin embargo, no es científico eliminar directamente en la base de datos y mucha información importante se eliminará por error.
A través de declaraciones de consulta difusa:
Copie el código de código de la siguiente manera:
seleccione * en Comentarios donde hay comentarios como '%http%'
Resultado: "Sin memoria"
Después de una búsqueda constante, se encontró la causa principal del problema:
Cuando se utiliza la palabra clave LIKE para consultar símbolos japoneses en ASP, se producirá un error, como Chr(-23075), que indica un desbordamiento de memoria.
Si los datos de la tabla de datos contienen caracteres japoneses o algunos caracteres chinos especiales no simplificados, también se producirán errores de desbordamiento de memoria.
Se dice en línea que el problema anterior ha sido confirmado por los ingenieros de Microsoft en Microsoft Power Camp y es un ERROR del producto que no se puede resolver. La única forma es codificar todos los datos de la base de datos en formato de texto ANSI y luego guardarlos. DECODIFICAR nuevamente cuando se muestre.
No hay solución. La única forma es convertir el campo y guardarlo en otro campo nuevo como se mencionó anteriormente, y luego realizar la operación de limpieza. Es realmente difícil afrontar este exceso de datos.
La función EncodeString realiza el escape de caracteres
Copie el código de código de la siguiente manera:
Función EncodeString (strWords)
Atenuar mientras dure
Dim strEncodeWords
Para i = 1 a Len(strWords)
strEncodeWords = strEncodeWords & CStr(Asc(Mid(strWords, i, 1))) & ","
Próximo
EncodeString = strEncodeWords
Función final
Después de escapar de esta manera, durante la búsqueda difusa, escape las palabras clave
Copie el código de código de la siguiente manera:
eliminar * de Comentarios donde Comentarios_nuevos como '%&EncodeString("http")&%'