error de codificación y la codificación UTF8 GB2312 es diferente, UTF-8 codificación de importación en escritura sqlplus SQL será ilegible, entonces usted necesita para convertir a la codificación UTF8 GB2312 La codificación, pero una a una conversión es muy molesta, la siguiente serie pequeña le enseña cómo convertir la codificación UTF8 en la codificación GB2312 en Linux. Cuando
Antecedentes
I a granel secuencia de comandos SQL importación-UTF8 codificado utilizando el sqlplus de Oracle, no sé cómo configurar el reconocimiento debido a que el formato UTF8 sqlplus, lo que resulta en ilegible, errores tales como la línea incorrecta Y para que el trabajo no pueda continuar, en el caso de google no fruit, tuve que encontrar una forma de convertir el código.
Debido a la gran cantidad de archivos, la conversión manual es demasiado complicada, por lo que pensé en la conversión por lotes con scripts. Afortunadamente, hay muchos scripts relacionados en Internet. El único problema para implementar es el marcado UTF8 BOM.
Contenido:
El código es el siguiente:
#! /bin /bash
para bucle en `find. -type f -name y ". * sql y " -print`do
echo $ bucle
mv -f $ loop $ loop.tmp
dos2unix $ loop.tmp
file_check_utf8 = ‘ file_check_utf8.log y rsquo;
sed -n y lsquo; 1l y rsquo;. $ loop.tmp "$ file_check_utf810 si grep y lsquo; ^ \\\\ 357 \\\\ \\\\ 273 277 y rsquo; $ file_check_utf8 "/dev /null 2" &111 luego
echo ‘. BOM UTF-8 y rsquo;
sed -n -e y lsquo; 1s /^ .. . //y rsquo; -e y lsquo; w intermediate.txt y rsquo; .. $ Loop.tmp14 iconv -f UTF-8 -t GB2312 -o $ bucle intermediate.txt15 rm-rf intermediate.txt
rm -rf $ loop.tmp
Elif iconv -f UTF-8 -t GB2312 $ loop.tmp "/dev /null 2" &. 118 entonces
echo ‘ UTF-8 y rsquo;
iconv -f UTF-8 -t GB2312 -o $ loop $ loop.tmp21 rm -rf $ loop.tmp
demás
echo ‘. ANSI y rsquo;
mv -f $ $ loop.tmp bucle
fi
rm -rf $ file_check_utf8
unix2dos # simulación, los requisitos deben ser la última línea del archivo de texto de un salto de línea 28. sed -n -e y lsquo; s /$ /\\ r /g y rsquo; -e y lsquo; w ’. $ loop.tmp $ loop29 mv -f $ loop.tmp $ bucle
hecho
#! /bin /bash
para bucle en `find. -type f -name " *. sql " -print`do
echo $ loop
mv -f $ loop $ loop.tmp
dos2unix $ loop.tmp
file_check_utf8 = ‘ file_check_utf8.log y rsquo;
sed -n y lsquo; 1l y rsquo;. $ loop.tmp "$ file_check_utf810 si grep y lsquo; ^ \\\\ 357 \\\\ \\\\ 273 277 y rsquo; $ file_check_utf8 "/dev /null 2" &111 luego
echo ‘. BOM UTF-8 y rsquo;
sed -n -e y lsquo; 1s /^ .. . //y rsquo; -e y lsquo; w intermediate.txt y rsquo; .. $ Loop.tmp14 iconv -f UTF-8 -t GB2312 -o $ bucle intermediate.txt15 rm-rf intermediate.txt
rm -rf $ loop.tmp
Elif iconv -f UTF-8 -t GB2312 $ loop.tmp "/dev /null 2" &. 118 entonces
echo ‘ UTF-8 y rsquo;
iconv -f UTF-8 -t GB2312 -o $ loop $ loop.tmp21 rm -rf $ loop.tmp
demás
echo ‘. ANSI y rsquo;
mv -f $ $ loop.tmp bucle
fi
rm -rf $ file_check_utf8
unix2dos # simulación, los requisitos deben ser la última línea del archivo de texto de un salto de línea 28. sed -n -e y lsquo; s /$ /\\ r /g y rsquo; -e y lsquo; w ’. $ loop.tmp $ loop29 mv -f $ loop.tmp $ bucle
hecho
Explicación
1. Para lidiar con la lista de materiales UTF8, no he encontrado una buena manera, y finalmente se juzga con sed + grep, si los primeros tres bytes son \\\\ 357 \\\\ 273 \\\\ 277, El archivo debe ser UTF8, use sed para eliminar los tres bytes y convertir
2. Para evitar la duplicación u omisión, use iconv en el script. El archivo sin la lista de materiales intenta convertirlo. El éxito de la conversión indica que el archivo es UTF8, de lo contrario la descripción es ANSI o GB2312
3. Respecto al último comando sed, es porque no hay un comando unix2dos en mi sistema, La simulación se llevó a cabo para facilitar la visualización y edición en Windows.
Lo anterior es la introducción de la conversión por lotes de codificación UTF8 a la codificación GB2312 en Linux. Después de la conversión, puede resolver problemas confusos, etc. Conversión por lotes espejo, ¿has aprendido?
Recientemente, algunos usuarios notificaron una anomalía después de instalar Ubuntu en VM Virtualbox
Al realizar la operación del sistema Linux, no habrá ninguna indicación de espacio
comando ifconfig en un sistema Linux se utiliza principalmente para mostrar la conf
Linux Use SVN, cuando había un mensaje de error que pueden y lsquo;? T convierten una cadena de rsq
El error del servicio sshd de inicio de Linux no puede cargar el host cómo hacerlo.
Introducción a la administración de procesos del sistema Linux
La función del parámetro -exec en el comando de búsqueda de Linux
Para ver la versión del sistema Linux Shell se está utilizando?
¿Cómo manejar Demasiados archivos abiertos bajo Linux?
Los comandos ifconfig y netstat del sistema Fedora no pueden encontrar una solución
Cómo usar ext3grep para recuperar archivos en Linux
¿El sistema pinyin de Ubuntu no puede escribir correctamente como resolverlo?
Método de detección y reparación de la vulnerabilidad del shell bash de Linux
Linux compile link prompt undefined reference 'dlclose' ¿Qué hacer?
Win7 código de pantalla azul 0x000007b cómo resolver
Software de grabación de DVD "a basket" --- Use DVD para mantener un buen momento (1)
Cómo actualizar el sistema operativo win7 vista
Windows 8 elimina la marca de agua en la esquina inferior derecha
El sonido de Win7 se ve afectado por otros programas. Sugerencias de reparación grandes y pequeñas
Cómo ocultar la partición del sistema win7
Causas y soluciones para CLIENT MAC ADDR cuando Win7 arrancó
Fácil de obtener una asignación de cuentas de muchos a muchos
Área de notificación de la barra de tareas personalizada de Win7
El novato debe leer el registro de restauración de la interfaz de inicio de sesión de XP