{"id":219,"date":"2014-01-02T19:15:38","date_gmt":"2014-01-02T19:15:38","guid":{"rendered":"https:\/\/aheaddata.com\/?p=219"},"modified":"2022-11-03T09:46:09","modified_gmt":"2022-11-03T09:46:09","slug":"problema-amb-el-bom","status":"publish","type":"post","link":"https:\/\/aheaddata.com\/es\/2014\/01\/problema-amb-el-bom\/","title":{"rendered":"Problema con el BOM"},"content":{"rendered":"<p>Cuando programamos aplicaciones web aparecen una serie de complicaciones que no tenemos habitualmente cuando programamos aplicaciones de escritorio. Una de ellas est\u00e1 relacionada con el BOM (<em>Byte Order Mark<\/em>). Seguro que muchos hemos tenido malas experiencias con WordPress por ejemplo, dici\u00e9ndonos cosas como <em>HTTP header have been already sent<\/em>. El BOM son unos caracteres especiales que se pueden colocar al principio de un archivo para indicar si es <em>Little<\/em>\u00a0o\u00a0<em>Big Endian<\/em>. Actualmente, en UTF-8 por ejemplo, no es obligatorio ponerlo (de hecho se recomienda no hacerlo), pero algunos editores de texto lo ponen por defecto y de aqu\u00ed vienen los problemas.<\/p>\n<p>Esta entrada ha estado motivada por un extra\u00f1o problema causado por el BOM, cosa que supe <em>a posteriori<\/em>.<\/p>\n<p>Cuando el frontend de la aplicaci\u00f3n enviaba una petici\u00f3n AJAX (desde jQuery), \u00e9sta llegaba correctamente al servidor. El servidor procesaba correctamente la petici\u00f3n y retornaba la respuesta JSON. A pesar de eso, del lado de jQuery la acci\u00f3n no segu\u00eda.<\/p>\n<p>Primero pens\u00e9 que la respuesta JSON estar\u00eda mal formada, as\u00ed que la comprob\u00e9 con un\u00a0<em>JSON checker<\/em>, como es\u00a0<a title=\"JSON checker\" href=\"https:\/\/jsonlint.com\/\" target=\"_blank\" rel=\"noopener\">JSONLint.\u00a0<\/a>La respuesta JSON estaba bien formada.<\/p>\n<p>Despu\u00e9s pens\u00e9 que habr\u00eda alg\u00fan error jQuery-Javascript cuando se ejecutaba la acci\u00f3n\u00a0<em>success<\/em>, pero no era as\u00ed. Simplemente la acci\u00f3n\u00a0<em>success<\/em>\u00a0no se ejecutaba nunca. Eso me hizo pensar de nuevo en que hab\u00eda alg\u00fan error con la respuesta JSON. Pero, \u00bfc\u00f3mo? si la hab\u00eda comprobado con un\u00a0<em>checker<\/em>.<\/p>\n<p>Resulta que la respuesta ven\u00eda con un BOM al principio, cosa que hac\u00eda que jQuery no ejecutase la acci\u00f3n\u00a0<em>success<\/em>, aunque la respuesta era un JSON bien formado. El problema ahora era&#8230; tengo un proyecto web con cerca de dos mil archivos PHP&#8230; \u00bfc\u00f3mo puedo encontrar el archivo en el que se ha incluido el BOM?<\/p>\n<p>Habitualmente he usado un editor que te indica si el archivo tiene BOM o no, y te permite quitarlo o cambiar la codificaci\u00f3n, como es\u00a0<a title=\"Notepad++ text editor\" href=\"https:\/\/notepad-plus-plus.org\/\" target=\"_blank\" rel=\"noopener\">Notepad++<\/a>, pero se hab\u00edan editado demasiados archivos como para revisarlos a mano. Pens\u00e9 en programar una peque\u00f1a aplicaci\u00f3n o script para detectar archivos con BOM, pero alguien se hab\u00eda preocupado de hacerlo y publicarlo gratuitamente:\u00a0<a title=\"Detector de BOM\" href=\"https:\/\/www.bryntyounce.com\/filebomdetector.htm\" target=\"_blank\" rel=\"noopener\">File BOM Detector<\/a>.\u00a0Sencillo y efectivo. Problema resuelto.<\/p>","protected":false},"excerpt":{"rendered":"<p>Cuando programamos aplicaciones web aparecen una serie de complicaciones que no tenemos habitualmente cuando programamos aplicaciones de escritorio. Una de ellas est\u00e1 relacionada con el BOM (Byte Order Mark). Seguro que muchos hemos tenido malas experiencias con WordPress por ejemplo, &hellip; <a href=\"https:\/\/aheaddata.com\/es\/2014\/01\/problema-amb-el-bom\/\">Continuar<\/a><\/p>\n","protected":false},"author":333999,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[1,34,6],"tags":[54,42,53,39,41,45,51,40,49,38,48,47,52,50,43,46,37,44,55,12,57,56],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v19.4 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Problema amb el BOMProblema con el BOM - Ahead Data Inform\u00e1tica<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/aheaddata.com\/es\/2014\/01\/problema-amb-el-bom\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Problema amb el BOMProblema con el BOM - Ahead Data Inform\u00e1tica\" \/>\n<meta property=\"og:description\" content=\"Cuando programamos aplicaciones web aparecen una serie de complicaciones que no tenemos habitualmente cuando programamos aplicaciones de escritorio. Una de ellas est\u00e1 relacionada con el BOM (Byte Order Mark). Seguro que muchos hemos tenido malas experiencias con WordPress por ejemplo, &hellip; Continuar\" \/>\n<meta property=\"og:url\" content=\"https:\/\/aheaddata.com\/es\/2014\/01\/problema-amb-el-bom\/\" \/>\n<meta property=\"og:site_name\" content=\"Ahead Data Inform\u00e1tica\" \/>\n<meta property=\"article:published_time\" content=\"2014-01-02T19:15:38+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-11-03T09:46:09+00:00\" \/>\n<meta name=\"author\" content=\"web@aheaddata.com\" \/>\n<meta name=\"twitter:card\" content=\"summary\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"web@aheaddata.com\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebSite\",\"@id\":\"https:\/\/aheaddata.com\/es\/#website\",\"url\":\"https:\/\/aheaddata.com\/es\/\",\"name\":\"Ahead Data Inform\u00e1tica\",\"description\":\"Programaci\u00f3n, dise\u00f1o web y mantenimiento inform\u00e1tico\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/aheaddata.com\/es\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"es\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/aheaddata.com\/es\/2014\/01\/problema-amb-el-bom\/\",\"url\":\"https:\/\/aheaddata.com\/es\/2014\/01\/problema-amb-el-bom\/\",\"name\":\"Problema amb el BOMProblema con el BOM - Ahead Data Inform\u00e1tica\",\"isPartOf\":{\"@id\":\"https:\/\/aheaddata.com\/es\/#website\"},\"datePublished\":\"2014-01-02T19:15:38+00:00\",\"dateModified\":\"2022-11-03T09:46:09+00:00\",\"author\":{\"@id\":\"https:\/\/aheaddata.com\/#\/schema\/person\/86e344da57003c643d2f1faaff7b54a0\"},\"breadcrumb\":{\"@id\":\"https:\/\/aheaddata.com\/es\/2014\/01\/problema-amb-el-bom\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[[\"https:\/\/aheaddata.com\/es\/2014\/01\/problema-amb-el-bom\/\"]]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/aheaddata.com\/es\/2014\/01\/problema-amb-el-bom\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Inici\",\"item\":\"https:\/\/aheaddata.com\/es\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Problema amb el BOM\"}]},{\"@type\":\"Person\",\"@id\":\"https:\/\/aheaddata.com\/#\/schema\/person\/86e344da57003c643d2f1faaff7b54a0\",\"name\":\"web@aheaddata.com\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/aheaddata.com\/es\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/6c685aadd1ebe248c8c9c5d003c88cf7?s=96&d=identicon&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/6c685aadd1ebe248c8c9c5d003c88cf7?s=96&d=identicon&r=g\",\"caption\":\"web@aheaddata.com\"},\"url\":\"https:\/\/aheaddata.com\/es\/author\/webaheaddata-com\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Problema amb el BOMProblema con el BOM - Ahead Data Inform\u00e1tica","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/aheaddata.com\/es\/2014\/01\/problema-amb-el-bom\/","og_locale":"es_ES","og_type":"article","og_title":"Problema amb el BOMProblema con el BOM - Ahead Data Inform\u00e1tica","og_description":"Cuando programamos aplicaciones web aparecen una serie de complicaciones que no tenemos habitualmente cuando programamos aplicaciones de escritorio. Una de ellas est\u00e1 relacionada con el BOM (Byte Order Mark). Seguro que muchos hemos tenido malas experiencias con WordPress por ejemplo, &hellip; Continuar","og_url":"https:\/\/aheaddata.com\/es\/2014\/01\/problema-amb-el-bom\/","og_site_name":"Ahead Data Inform\u00e1tica","article_published_time":"2014-01-02T19:15:38+00:00","article_modified_time":"2022-11-03T09:46:09+00:00","author":"web@aheaddata.com","twitter_card":"summary","twitter_misc":{"Escrito por":"web@aheaddata.com","Tiempo de lectura":"4 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebSite","@id":"https:\/\/aheaddata.com\/es\/#website","url":"https:\/\/aheaddata.com\/es\/","name":"Ahead Data Inform\u00e1tica","description":"Programaci\u00f3n, dise\u00f1o web y mantenimiento inform\u00e1tico","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/aheaddata.com\/es\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"es"},{"@type":"WebPage","@id":"https:\/\/aheaddata.com\/es\/2014\/01\/problema-amb-el-bom\/","url":"https:\/\/aheaddata.com\/es\/2014\/01\/problema-amb-el-bom\/","name":"Problema amb el BOMProblema con el BOM - Ahead Data Inform\u00e1tica","isPartOf":{"@id":"https:\/\/aheaddata.com\/es\/#website"},"datePublished":"2014-01-02T19:15:38+00:00","dateModified":"2022-11-03T09:46:09+00:00","author":{"@id":"https:\/\/aheaddata.com\/#\/schema\/person\/86e344da57003c643d2f1faaff7b54a0"},"breadcrumb":{"@id":"https:\/\/aheaddata.com\/es\/2014\/01\/problema-amb-el-bom\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":[["https:\/\/aheaddata.com\/es\/2014\/01\/problema-amb-el-bom\/"]]}]},{"@type":"BreadcrumbList","@id":"https:\/\/aheaddata.com\/es\/2014\/01\/problema-amb-el-bom\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Inici","item":"https:\/\/aheaddata.com\/es\/"},{"@type":"ListItem","position":2,"name":"Problema amb el BOM"}]},{"@type":"Person","@id":"https:\/\/aheaddata.com\/#\/schema\/person\/86e344da57003c643d2f1faaff7b54a0","name":"web@aheaddata.com","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/aheaddata.com\/es\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/6c685aadd1ebe248c8c9c5d003c88cf7?s=96&d=identicon&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/6c685aadd1ebe248c8c9c5d003c88cf7?s=96&d=identicon&r=g","caption":"web@aheaddata.com"},"url":"https:\/\/aheaddata.com\/es\/author\/webaheaddata-com\/"}]}},"_links":{"self":[{"href":"https:\/\/aheaddata.com\/es\/wp-json\/wp\/v2\/posts\/219"}],"collection":[{"href":"https:\/\/aheaddata.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/aheaddata.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/aheaddata.com\/es\/wp-json\/wp\/v2\/users\/333999"}],"replies":[{"embeddable":true,"href":"https:\/\/aheaddata.com\/es\/wp-json\/wp\/v2\/comments?post=219"}],"version-history":[{"count":2,"href":"https:\/\/aheaddata.com\/es\/wp-json\/wp\/v2\/posts\/219\/revisions"}],"predecessor-version":[{"id":1134,"href":"https:\/\/aheaddata.com\/es\/wp-json\/wp\/v2\/posts\/219\/revisions\/1134"}],"wp:attachment":[{"href":"https:\/\/aheaddata.com\/es\/wp-json\/wp\/v2\/media?parent=219"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/aheaddata.com\/es\/wp-json\/wp\/v2\/categories?post=219"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/aheaddata.com\/es\/wp-json\/wp\/v2\/tags?post=219"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}