• Главная
  • Карта сайта
Не найдено

codificações php diferentes

  1. Publisher
  2. x64 (também conhecido como andi)

Escritores iniciantes não se importam com algo como codificação

Escritores iniciantes não se importam com algo como codificação. Portanto, em sites, você pode encontrar uma bagunça terrível, quando os dados do banco de dados são obtidos em uma codificação, a página é formada em outra e o servidor recebe a terceira. como resultado, se a página puder ser descriptografada, pelo menos 2 vezes. Então, por que tal problema acontece e como superá-lo?

no segmento russo na maioria das vezes você pode encontrar o chamado windows-codificação. chame de forma diferente: windows-1251, cp1251 ou até ansi. o próximo é utf-8. Você também pode encontrar o nome unicode, mas isso não é totalmente correto, já que Unicode é o nome geral para todo o grupo (utf-8, utf-16, utf-32). e uma raridade muito popular é koi8-r ou simplesmente koi-8 - a codificação Linux, antes popular. É claro que é possível encontrar algo mais no segmento russo, mas isso é mais uma “indulgência” do autor.

A principal diferença entre utf-8 e outros (principalmente windows-1251 e koi8-r) é o último byte, e o número máximo de caracteres que podem ser representados usando estas codificações é limitado a 256. Escusado será dizer que para uma apresentação completa do texto deste pode não ser o suficiente. e para html foi encontrada uma solução - o uso dos chamados mnemônicos. por exemplo:

© - & copy;

Além do fato de que cada caractere é descrito por um grupo de caracteres, o código se torna ilegível e o trabalho com o texto se torna mais complicado. é aqui que o multibyte utf-8 vem para o resgate. é muito conveniente usar letras de alfabetos diferentes e símbolos diferentes em um texto.

Assim, o conjunto mais confortável de condições iniciais é o seguinte: a codificação do banco de dados, scripts php e scripts de páginas html / js deve ser a mesma. Claro, você pode usar diferentes, mas neste caso existe o risco de ficar confuso. não importa qual página de código é usada. se o site for apenas para um público que fala russo, o windows-1251 será o suficiente. Caso contrário, utf-8 seria a escolha lógica. a primeira opção é mais ou menos clara. A codificação multibyte exigirá alguns gestos.

Ao trabalhar com o utf-8, um bloco de notas padrão não funcionará ! O fato é que este editor, ao salvar um arquivo nesta codificação, adiciona uma assinatura ao início - 3 caracteres, o chamado bom (byte order mark), que pode ser usado para determinar a codificação ao abrir um arquivo. é melhor escolher outro editor: notepad2 ou notepad ++ . nas configurações você deve escolher para salvar sem uma assinatura.

O próximo passo importante é trabalhar com o banco de dados. É altamente desejável que a codificação do campo base / table / text corresponda à codificação do script (pode ser cp1251 ou utf-8, ou outra coisa). Se os dados do banco de dados forem obtidos na forma de "zyuk", muito provavelmente, a codificação da conexão será diferente dos dados armazenados no banco de dados. A consulta a seguir ajudará a superar a situação (execute imediatamente após a conexão com o banco de dados):

Se o site usa windows-1251, você deve especificá-lo - cp1251.

em geral, não há nada difícil. apenas, as funções php padrão não são projetadas para trabalhar com strings multibyte. mas existem bibliotecas padrão que ajudarão a corrigir a situação: iconv e mbstring . para expressões regulares, há também um switch necessário que é ativado com o modificador u .

Bem, os dados do banco de dados são obtidos, os scripts são escritos de acordo com todas as regras. Resta enviar o título correto e exibir o código da página no navegador do usuário. nós enviamos título assim:

header ('Tipo de Conteúdo: text / html; charset = utf-8');

se a codificação de byte único for usada, o valor para o conjunto de caracteres será diferente - windows-1251 . Depois disso, os problemas não devem permanecer.

Alguns exemplos mais simples de trabalhar com o utf-8 no php:

exemplo 1: iconv, número de caracteres por linha

$ s = 'string'; # string em utf-8 $ cnt1 = strlen ($ s); # conterá o valor $ 12 cnt2 = iconv_strlen ($ s, 'UTF-8'); # valor correto, 6

exemplo 2: mbstring, o número de caracteres em uma string

$ s = 'string'; # string em utf-8 $ cnt1 = strlen ($ s); # conterá o valor $ 12 cnt2 = mb_strlen ($ s, 'UTF-8'); # valor correto, 6

exemplo 3: expressões regulares, pesquisar e substituir

$ s = 'String'; # linha em utf-8 $ s = preg_replace ('/ p / i', 'd', $ s); # substituição não acontecerá $ s = preg_replace ('/ p / iu', 'd', $ s); # resultado palavra doca

o modificador i prescreve uma pesquisa que não diferencia maiúsculas de minúsculas, e o modificador u informa ao mecanismo de expressão regular para trabalhar com cadeias utf-8.

Se alguém disser que o php não pode funcionar com o utf-8, será errado. Há vários anos venho fazendo todos os meus projetos nesta codificação e não houve nenhum problema. Os próprios mecanismos de pesquisa usam há muito tempo essa maravilhosa codificação.

Publisher

offline 11 horas

x64 (também conhecido como andi)

Comentários: 2846 Publicações: 395 Registros: 02-04-2009

Então, por que tal problema acontece e como superá-lo?
Провайдеры:
  • 08.09.2015

    Batyevka.NET предоставляет услуги доступа к сети Интернет на территории Соломенского района г. Киева.Наша миссия —... 
    Читать полностью

  • 08.09.2015
    IPNET

    Компания IPNET — это крупнейший оператор и технологический лидер на рынке телекоммуникаций Киева. Мы предоставляем... 
    Читать полностью

  • 08.09.2015
    Boryspil.Net

    Интернет-провайдер «Boryspil.net» начал свою работу в 2008 году и на данный момент является одним из крупнейших поставщиков... 
    Читать полностью

  • 08.09.2015
    4OKNET

    Наша компания работает в сфере телекоммуникационных услуг, а именно — предоставлении доступа в сеть интернет.Уже... 
    Читать полностью

  • 08.09.2015
    Телегруп

    ДП «Телегруп-Украина» – IT-компания с 15-летним опытом работы на рынке телекоммуникационных услуг, а также официальный... 
    Читать полностью

  • 08.09.2015
    Софтлинк

    Высокая скоростьМы являемся участником Украинского центра обмена трафиком (UA — IX) с включением 10 Гбит / сек... 
    Читать полностью