<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/ref.mbstring.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'es',
  ),
  'this' => 
  array (
    0 => 'function.mb-detect-encoding.php',
    1 => 'mb_detect_encoding',
    2 => 'Detectar la codificaci&oacute;n de caracteres',
  ),
  'up' => 
  array (
    0 => 'ref.mbstring.php',
    1 => 'Funciones de strings multibyte',
  ),
  'prev' => 
  array (
    0 => 'function.mb-decode-numericentity.php',
    1 => 'mb_decode_numericentity',
  ),
  'next' => 
  array (
    0 => 'function.mb-detect-order.php',
    1 => 'mb_detect_order',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'es',
    'path' => 'reference/mbstring/functions/mb-detect-encoding.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="function.mb-detect-encoding" class="refentry">
 <div class="refnamediv">
  <h1 class="refname">mb_detect_encoding</h1>
  <p class="verinfo">(PHP 4 &gt;= 4.0.6, PHP 5, PHP 7, PHP 8)</p><p class="refpurpose"><span class="refname">mb_detect_encoding</span> &mdash; <span class="dc-title">Detectar la codificación de caracteres</span></p>

 </div>

 <div class="refsect1 description" id="refsect1-function.mb-detect-encoding-description">
  <h3 class="title">Descripción</h3>
  <div class="methodsynopsis dc-description">
   <span class="methodname"><strong>mb_detect_encoding</strong></span>(<span class="methodparam"><span class="type"><a href="language.types.string.php" class="type string">string</a></span> <code class="parameter">$string</code></span>, <span class="methodparam"><span class="type"><span class="type"><a href="language.types.array.php" class="type array">array</a></span>|<span class="type"><a href="language.types.string.php" class="type string">string</a></span>|<span class="type"><a href="language.types.null.php" class="type null">null</a></span></span> <code class="parameter">$encodings</code><span class="initializer"> = <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong></span></span>, <span class="methodparam"><span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span> <code class="parameter">$strict</code><span class="initializer"> = <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong></span></span>): <span class="type"><span class="type"><a href="language.types.string.php" class="type string">string</a></span>|<span class="type"><a href="language.types.singleton.php" class="type false">false</a></span></span></div>

  <p class="para rdfs-comment">
   Detectar la codificación de caracteres más probable para la <span class="type"><a href="language.types.string.php" class="type string">string</a></span> <code class="parameter">string</code>
   desde una lista de candidatos.
  </p>
  <p class="para">
   A partir de PHP 8.1, esta función utiliza heurística para detectar cuál de las codificaciones de texto válidas en la lista
   especificada tiene más probabilidades de ser correcta y puede no estar en el orden de <code class="parameter">encodings</code> proporcionado.
  </p>
  <p class="para">
   La detección automática del juego de caracteres previsto nunca es totalmente
   fiable; sin información adicional, es similar a descifrar una cadena cifrada sin la clave. Siempre es preferible utilizar una indicación del juego de caracteres almacenado o transmitido con los datos,
   como el encabezado HTTP &quot;Content-Type&quot;.
  </p>
  <p class="para">
   Esta función se utiliza principalmente con codificaciones multibyte, donde no todas las secuencias de
   bytes forman una cadena válida. Si la cadena de entrada contiene una secuencia de este tipo, esta
   codificación será rechazada.
  </p>

  <div class="warning"><strong class="warning">Advertencia</strong>
   <h1 class="title">El resultado no es fiable</h1>
   <p class="para">
    El nombre de esta función es engañoso, realiza una «suposición» en lugar de una «detección».
   </p>
   <p class="para">
    Las suposiciones están lejos de ser precisas, y por lo tanto, esta función no permite
    detectar de manera fiable la codificación correcto de los caracteres.
   </p>
  </div>
 </div>


 <div class="refsect1 parameters" id="refsect1-function.mb-detect-encoding-parameters">
  <h3 class="title">Parámetros</h3>
  <p class="para">
   <dl>
    
     <dt><code class="parameter">string</code></dt>
     <dd>
      <p class="para">
       El <span class="type"><a href="language.types.string.php" class="type string">string</a></span> que será inspeccionado.
      </p>
     </dd>
    
    
     <dt><code class="parameter">encodings</code></dt>
     <dd>
      <p class="para">
       Una lista de codificaciones de caracteres a probar. Esta lista puede ser especificada como
       un <span class="type"><a href="language.types.array.php" class="type array">array</a></span> de <span class="type"><a href="language.types.string.php" class="type string">string</a></span>, o como un <span class="type"><a href="language.types.string.php" class="type string">string</a></span> único separado por comas.
      </p>
      <p class="para">
       Si <code class="parameter">encodings</code> es omitido o <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong>,
       el será utilizado el detect_order actual (definido con la opción de configuración
       <a href="mbstring.configuration.php#ini.mbstring.detect-order" class="link">mbstring.detect_order</a>,
       o la función <span class="function"><a href="function.mb-detect-order.php" class="function">mb_detect_order()</a></span>).
      </p>
     </dd>
    
    
     <dt><code class="parameter">strict</code></dt>
     <dd>
      <p class="para">
       Controla el comportamiento cuando <code class="parameter">string</code> no es
       válido en ninguno de los <code class="parameter">encodings</code> listados.
       Si <code class="parameter">strict</code> está definido como <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong>, se devolverá la codificación
       más coincidente; si <code class="parameter">strict</code>
       está definido como <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong>, devolverá <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong>.
      </p>
      <p class="para">
       El valor por omisión de <code class="parameter">strict</code> puede ser definido
       con la opción de configuración
       <a href="mbstring.configuration.php#ini.mbstring.strict-detection" class="link">mbstring.strict_detection</a>.
      </p>
     </dd>
    
   </dl>
  </p>
 </div>


 <div class="refsect1 returnvalues" id="refsect1-function.mb-detect-encoding-returnvalues">
  <h3 class="title">Valores devueltos</h3>
  <p class="para">
   La codificación caracteres detectado, o <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> si la cadena no es válida
   en ninguna de las codificaciones listadas.
  </p>
 </div>


 <div class="refsect1 changelog" id="refsect1-function.mb-detect-encoding-changelog">
  <h3 class="title">Historial de cambios</h3>
  <table class="doctable informaltable">
   
    <thead>
     <tr>
      <th>Versión</th>
      <th>Descripción</th>
     </tr>

    </thead>

    <tbody class="tbody">
     <tr>
      <td>8.2.0</td>
      <td>
       <span class="function"><strong>mb_detect_encoding()</strong></span> ya no devolverá las siguientes
       codificaciones que no sean de texto:
       <code class="literal">&quot;Base64&quot;</code>, <code class="literal">&quot;QPrint&quot;</code>,
       <code class="literal">&quot;UUencode&quot;</code>, <code class="literal">&quot;HTML entities&quot;</code>,
       <code class="literal">&quot;7 bit&quot;</code> y <code class="literal">&quot;8 bit&quot;</code>.
      </td>
     </tr>

    </tbody>
   
  </table>

 </div>


 <div class="refsect1 examples" id="refsect1-function.mb-detect-encoding-examples">
  <h3 class="title">Ejemplos</h3>
  <p class="para">
   <div class="example" id="example-1">
    <p><strong>Ejemplo #1 Ejemplo con <span class="function"><strong>mb_detect_encoding()</strong></span></strong></p>
    <div class="example-contents">
<div class="annotation-interactive phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /><br />$str </span><span style="color: #007700">= </span><span style="color: #DD0000">"\x95\xB6\x8E\x9A\x83\x52\x81\x5B\x83\x68"</span><span style="color: #007700">;<br /><br /></span><span style="color: #FF8000">// Detecta la codificación con el detect_order actual<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">mb_detect_encoding</span><span style="color: #007700">(</span><span style="color: #0000BB">$str</span><span style="color: #007700">));<br /><br /></span><span style="color: #FF8000">// "auto" es modificado según mbstring.language<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">mb_detect_encoding</span><span style="color: #007700">(</span><span style="color: #0000BB">$str</span><span style="color: #007700">, </span><span style="color: #DD0000">"auto"</span><span style="color: #007700">));<br /><br /></span><span style="color: #FF8000">// Especifica el parámetro "encodings" con una lista separada por comas<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">mb_detect_encoding</span><span style="color: #007700">(</span><span style="color: #0000BB">$str</span><span style="color: #007700">, </span><span style="color: #DD0000">"JIS, eucjp-win, sjis-win"</span><span style="color: #007700">));<br /><br /></span><span style="color: #FF8000">// Uso de un array para especificar el parámetro "encodings"<br /></span><span style="color: #0000BB">$encodings </span><span style="color: #007700">= [<br />  </span><span style="color: #DD0000">"ASCII"</span><span style="color: #007700">,<br />  </span><span style="color: #DD0000">"JIS"</span><span style="color: #007700">,<br />  </span><span style="color: #DD0000">"EUC-JP"<br /></span><span style="color: #007700">];<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">mb_detect_encoding</span><span style="color: #007700">(</span><span style="color: #0000BB">$str</span><span style="color: #007700">, </span><span style="color: #0000BB">$encodings</span><span style="color: #007700">));<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

    <div class="example-contents"><p>El ejemplo anterior mostrará:</p></div>
    <div class="example-contents screen">
<div class="annotation-interactive examplescode"><pre class="examplescode">string(5) &quot;ASCII&quot;
string(5) &quot;ASCII&quot;
string(8) &quot;SJIS-win&quot;
string(5) &quot;ASCII&quot;</pre>
</div>
    </div>
   </div>
  </p>
  <p class="para">
   <div class="example" id="example-2">
    <p><strong>Ejemplo #2 Efecto del parámetro <code class="parameter">strict</code></strong></p>
    <div class="example-contents">
<div class="annotation-interactive phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #FF8000">// 'áéóú' codificado en ISO-8859-1<br /></span><span style="color: #0000BB">$str </span><span style="color: #007700">= </span><span style="color: #DD0000">"\xE1\xE9\xF3\xFA"</span><span style="color: #007700">;<br /><br /></span><span style="color: #FF8000">// La cadena no válica en ASCII ni UTF-8, pero UTF-8 se considera una coincidencia más cercana<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">mb_detect_encoding</span><span style="color: #007700">(</span><span style="color: #0000BB">$str</span><span style="color: #007700">, [</span><span style="color: #DD0000">'ASCII'</span><span style="color: #007700">, </span><span style="color: #DD0000">'UTF-8'</span><span style="color: #007700">], </span><span style="color: #0000BB">false</span><span style="color: #007700">));<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">mb_detect_encoding</span><span style="color: #007700">(</span><span style="color: #0000BB">$str</span><span style="color: #007700">, [</span><span style="color: #DD0000">'ASCII'</span><span style="color: #007700">, </span><span style="color: #DD0000">'UTF-8'</span><span style="color: #007700">], </span><span style="color: #0000BB">true</span><span style="color: #007700">));<br /><br /></span><span style="color: #FF8000">// Si se encuentra una codificación válida, el parámetro "strict" no cambia el resultado<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">mb_detect_encoding</span><span style="color: #007700">(</span><span style="color: #0000BB">$str</span><span style="color: #007700">, [</span><span style="color: #DD0000">'ASCII'</span><span style="color: #007700">, </span><span style="color: #DD0000">'UTF-8'</span><span style="color: #007700">, </span><span style="color: #DD0000">'ISO-8859-1'</span><span style="color: #007700">], </span><span style="color: #0000BB">false</span><span style="color: #007700">));<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">mb_detect_encoding</span><span style="color: #007700">(</span><span style="color: #0000BB">$str</span><span style="color: #007700">, [</span><span style="color: #DD0000">'ASCII'</span><span style="color: #007700">, </span><span style="color: #DD0000">'UTF-8'</span><span style="color: #007700">, </span><span style="color: #DD0000">'ISO-8859-1'</span><span style="color: #007700">], </span><span style="color: #0000BB">true</span><span style="color: #007700">));<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

    <div class="example-contents"><p>El ejemplo anterior mostrará:</p></div>
    <div class="example-contents screen">
<div class="annotation-interactive examplescode"><pre class="examplescode">string(5) &quot;UTF-8&quot;
bool(false)
string(10) &quot;ISO-8859-1&quot;
string(10) &quot;ISO-8859-1&quot;</pre>
</div>
    </div>
   </div>
  </p>
  <p class="para">
   En ciertos casos, la misma secuencia de bytes puede formar una cadena válida
   en diferentes codificaciones de caracteres, y es imposible determinar
   cuál interpretación era prevista. Un ejemplo, entre otros,
   la secuencia de bytes &quot;\xC4\xA2&quot; podría ser:
  </p>
  <p class="para">
   <ul class="simplelist">
    <li>
     "Ä¢" (U+00C4 LATIN CAPITAL LETTER A WITH DIAERESIS seguido de U+00A2 CENT SIGN)
     codificado en ISO-8859-1, ISO-8859-15, o Windows-1252
    </li>
    <li>
     "ФЂ" (U+0424 CYRILLIC CAPITAL LETTER EF seguido de U+0402 CYRILLIC CAPITAL LETTER
     DJE) codificado en ISO-8859-5
    </li>
    <li>
     "Ģ" (U+0122 LATIN CAPITAL LETTER G WITH CEDILLA) codificado en UTF-8
    </li>
   </ul>
  </p>
  <p class="para">
   <div class="example" id="example-3">
    <p><strong>Ejemplo #3 Efecto del orden cuando coinciden múltiples codificaciones</strong></p>
    <div class="example-contents">
<div class="annotation-interactive phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$str </span><span style="color: #007700">= </span><span style="color: #DD0000">"\xC4\xA2"</span><span style="color: #007700">;<br /><br /></span><span style="color: #FF8000">// La cadena es válida en las tres codificaciones, pero no siempre devolverá el primero de la lista<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">mb_detect_encoding</span><span style="color: #007700">(</span><span style="color: #0000BB">$str</span><span style="color: #007700">, [</span><span style="color: #DD0000">'UTF-8'</span><span style="color: #007700">]));<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">mb_detect_encoding</span><span style="color: #007700">(</span><span style="color: #0000BB">$str</span><span style="color: #007700">, [</span><span style="color: #DD0000">'UTF-8'</span><span style="color: #007700">, </span><span style="color: #DD0000">'ISO-8859-1'</span><span style="color: #007700">, </span><span style="color: #DD0000">'ISO-8859-5'</span><span style="color: #007700">])); </span><span style="color: #FF8000">// A partir de PHP 8.1 esto devolverá ISO-8859-1 en vez de UTF-8<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">mb_detect_encoding</span><span style="color: #007700">(</span><span style="color: #0000BB">$str</span><span style="color: #007700">, [</span><span style="color: #DD0000">'ISO-8859-1'</span><span style="color: #007700">, </span><span style="color: #DD0000">'ISO-8859-5'</span><span style="color: #007700">, </span><span style="color: #DD0000">'UTF-8'</span><span style="color: #007700">]));<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">mb_detect_encoding</span><span style="color: #007700">(</span><span style="color: #0000BB">$str</span><span style="color: #007700">, [</span><span style="color: #DD0000">'ISO-8859-5'</span><span style="color: #007700">, </span><span style="color: #DD0000">'UTF-8'</span><span style="color: #007700">, </span><span style="color: #DD0000">'ISO-8859-1'</span><span style="color: #007700">]));<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

    <div class="example-contents"><p>El ejemplo anterior mostrará:</p></div>
    <div class="example-contents screen">
<div class="annotation-interactive examplescode"><pre class="examplescode">string(5) &quot;UTF-8&quot;
string(10) &quot;ISO-8859-1&quot;
string(10) &quot;ISO-8859-1&quot;
string(10) &quot;ISO-8859-5&quot;</pre>
</div>
    </div>
   </div>
  </p>
 </div>


 <div class="refsect1 seealso" id="refsect1-function.mb-detect-encoding-seealso">
  <h3 class="title">Ver también</h3>
  <p class="para">
   <ul class="simplelist">
    <li><span class="function"><a href="function.mb-detect-order.php" class="function" rel="rdfs-seeAlso">mb_detect_order()</a> - Lee/modifica el orden de detecci&oacute;n de codificaciones</span></li>
   </ul>
  </p>
 </div>


</div><?php manual_footer($setup); ?>