{"id":211,"date":"2007-12-20T08:36:21","date_gmt":"2007-12-20T08:36:21","guid":{"rendered":"https:\/\/www.viafirma.com\/blog-xnoccio\/?p=211"},"modified":"2026-01-23T12:03:23","modified_gmt":"2026-01-23T12:03:23","slug":"detectar-a-bajo-nivel-si-un-fichero-es-utf-8-desde-java","status":"publish","type":"post","link":"https:\/\/www.viafirma.com\/es\/detectar-a-bajo-nivel-si-un-fichero-es-utf-8-desde-java\/","title":{"rendered":"Detectar a bajo nivel si un fichero es UTF-8 desde Java"},"content":{"rendered":"<p>Detectar si un fichero est\u00e1 codificado en UTF-8 puede parecer sencillo, pero al profundizar, se revela m\u00e1s complejo de lo esperado. A continuaci\u00f3n, una breve introducci\u00f3n te\u00f3rica y un enfoque pr\u00e1ctico para realizar esta tarea en Java.<\/p>\n<h3>Introducci\u00f3n te\u00f3rica a la codificaci\u00f3n UTF-8<\/h3>\n<p>Los archivos se almacenan como arrays de bytes que luego se asocian a caracteres mediante distintas codificaciones como ASCII, ISO-8859-1, y UTF-8. Para manejar de manera uniforme los caracteres de todos los idiomas, se cre\u00f3 Unicode, que asocia c\u00f3digos num\u00e9ricos a cada s\u00edmbolo, utilizado por cualquier lenguaje del mundo y facilitando su representaci\u00f3n inform\u00e1tica.<\/p>\n<p><a href=\"https:\/\/es.wikipedia.org\/wiki\/UTF-8\" target=\"_blank\" rel=\"noopener\">UTF-8<\/a> es una codificaci\u00f3n variable que representa caracteres Unicode utilizando de 1 a 4 bytes, permitiendo una serializaci\u00f3n eficiente de texto en ficheros o flujos de datos. Esta variabilidad en el tama\u00f1o de bytes es la raz\u00f3n por la que algunos ficheros se ven corruptos cuando se leen con una codificaci\u00f3n incorrecta o con caracteres extra\u00f1os.<\/p>\n<h2><strong>Algoritmo para detectar si un archivo es UTF-8<\/strong><\/h2>\n<p>El proceso es sencillo: basta leer el fichero byte a byte, verificando que cada byte sigue las reglas de esta codificaci\u00f3n.<\/p>\n<ul>\n<li>Si el byte es menor que 0x7F (0111 1111), es v\u00e1lido y representa un caracter de 1 byte.<\/li>\n<li>Si el byte coincide con la m\u00e1scara 110xxxxx, compruebo que el siguiente byte cumple con la m\u00e1scara 10xxxxxx. En este caso indica que forman un caracter de 2 bytes.<\/li>\n<li>De manera similar, se detectan caracteres de 3 o 4 bytes<\/li>\n<\/ul>\n<p>Si alguna condici\u00f3n no se cumple, el fichero no sigue la codificaci\u00f3n esperada. De lo contrario, tiene una codificaci\u00f3n compatible.<\/p>\n<p>Aunque hay implementaciones m\u00e1s eficientes, este enfoque en Java es \u00fatil para validar archivos.<\/p>\n<h2><a title=\"Direct link to file\" href=\"https:\/\/www.viafirma.com\/wp-content\/uploads\/2007\/12\/testencodingjava1.txt\">Recorte de c\u00f3digo para detectar si un fichero est\u00e1 codificado en UTF-8<\/a><\/h2>\n<p><span style=\"font-weight: 400;\"><div class=\"vf_related_posts_wrapper\"><h2 class=\"vf_related_posts_title\">Informaci\u00f3n relacionada<\/h2><div class=\"vf_related_posts\"><article class=\"vc_gitem-post-data-source-post\"><a href=\"https:\/\/www.viafirma.com\/es\/eclipse-no-me-autocompleta\/\" class=\"vc_gitem-post-link\"><div class=\"vc_gitem-post-image\"><img loading=\"lazy\" decoding=\"async\" width=\"768\" height=\"295\" src=\"https:\/\/www.viafirma.com\/wp-content\/uploads\/2008\/01\/eclipse-768x295.webp\" class=\" wp-post-image\" alt=\"Autocompletar Eclipse\" srcset=\"https:\/\/www.viafirma.com\/wp-content\/uploads\/2008\/01\/eclipse-768x295.webp 768w, https:\/\/www.viafirma.com\/wp-content\/uploads\/2008\/01\/eclipse-300x115.webp 300w, https:\/\/www.viafirma.com\/wp-content\/uploads\/2008\/01\/eclipse-jpg.webp 1000w\" sizes=\"auto, (max-width: 768px) 100vw, 768px\" \/><\/div><\/a><div class=\"vc_gitem-post-data\"><h3 class=\"vc_gitem-post-data-source-post_title\"><a href=\"https:\/\/www.viafirma.com\/es\/eclipse-no-me-autocompleta\/\">Autocompletar Eclipse<\/a><\/h3><p class=\"vc_gitem-post-data-source-post_excerpt\">Soluciona autocompletado en Eclipse<\/p><\/div><\/article><article class=\"vc_gitem-post-data-source-post\"><a href=\"https:\/\/www.viafirma.com\/es\/no-funciona-java-desktop-en-java\/\" class=\"vc_gitem-post-link\"><div class=\"vc_gitem-post-image\"><img loading=\"lazy\" decoding=\"async\" width=\"768\" height=\"475\" src=\"https:\/\/www.viafirma.com\/wp-content\/uploads\/2019\/12\/blog_java-768x475.webp\" class=\" wp-post-image\" alt=\"No funciona Viafirma Java Desktop en Java\" srcset=\"https:\/\/www.viafirma.com\/wp-content\/uploads\/2019\/12\/blog_java-768x475.webp 768w, https:\/\/www.viafirma.com\/wp-content\/uploads\/2019\/12\/blog_java-300x186.webp 300w, https:\/\/www.viafirma.com\/wp-content\/uploads\/2019\/12\/blog_java-1024x634.webp 1024w, https:\/\/www.viafirma.com\/wp-content\/uploads\/2019\/12\/blog_java.webp 1228w\" sizes=\"auto, (max-width: 768px) 100vw, 768px\" \/><\/div><\/a><div class=\"vc_gitem-post-data\"><h3 class=\"vc_gitem-post-data-source-post_title\"><a href=\"https:\/\/www.viafirma.com\/es\/no-funciona-java-desktop-en-java\/\">No funciona Viafirma Java Desktop en Java<\/a><\/h3><p class=\"vc_gitem-post-data-source-post_excerpt\">Si est\u00e1s teniendo problemas para ejecutar Viafirma Java Desktop en<\/p><\/div><\/article><\/div><\/div><\/span><\/p>\n","protected":false},"excerpt":{"rendered":"Detecta archivos UTF-8 desde Java...","protected":false},"author":1,"featured_media":35647,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"default","adv-header-id-meta":"","stick-header-meta":"default","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[40],"class_list":["post-211","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-miscelanea"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.viafirma.com\/es\/wp-json\/wp\/v2\/posts\/211","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.viafirma.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.viafirma.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.viafirma.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.viafirma.com\/es\/wp-json\/wp\/v2\/comments?post=211"}],"version-history":[{"count":2,"href":"https:\/\/www.viafirma.com\/es\/wp-json\/wp\/v2\/posts\/211\/revisions"}],"predecessor-version":[{"id":97658,"href":"https:\/\/www.viafirma.com\/es\/wp-json\/wp\/v2\/posts\/211\/revisions\/97658"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.viafirma.com\/es\/wp-json\/wp\/v2\/media\/35647"}],"wp:attachment":[{"href":"https:\/\/www.viafirma.com\/es\/wp-json\/wp\/v2\/media?parent=211"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.viafirma.com\/es\/wp-json\/wp\/v2\/categories?post=211"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}