Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Fluxo de trabalho UTF8 PHP, MySQL resumido

  • mb_internal_encoding('UTF-8') não faz nada por si só, apenas define o parâmetro de codificação padrão para cada mb_ função. Se você não estiver usando nenhum mb_ função, não faz diferença. Se estiver, faz sentido configurá-lo para que você não precise passar o $encoding parâmetro cada vez individualmente.
  • IMO mb_detect_encoding é praticamente inútil, pois é fundamentalmente impossível detectar com precisão a codificação de texto desconhecido. Você deve saber em que codificação um blob de texto está porque tem uma especificação sobre ele ou precisa analisar metadados apropriados, como cabeçalhos ou metatags, onde a codificação é especificada.
  • Usando mb_check_encoding para verificar se um blob de texto é válido na codificação que você espera que seja, normalmente é suficiente. Se não estiver, descarte-o e lance um erro apropriado.

  • A respeito de:

    Se você está manipulando strings que contêm caracteres multibyte, então sim, você precisa usar o mb_ funções para evitar obter resultados errados. As funções principais de strings funcionam apenas em um nível de byte, não em um nível de caractere, que é o que você normalmente deseja ao trabalhar com strings.
  • utf8_general_ci vs. utf8_bin só faz diferença quando agrupar , ou seja, classificar e comparar strings. Com utf8_bin os dados são tratados em forma binária, ou seja, apenas dados idênticos são idênticos. Com utf8_general_ci alguma lógica é aplicada, e. "é" classifica junto com "e" e maiúsculas são consideradas iguais a minúsculas.