Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Não tenho muito conhecimento em PHP. Como eu faço no json abaixo para retornar o "Subject" e o item "multipart/alternative"
[
[
"Received",
"by luna.mailgun.net with SMTP mgrt 8734663311733; Fri, 03 May 2013 18:26:27 +0000"
],
[
"Content-Type",
[
"multipart/alternative",
{
"boundary": "eb663d73ae0a4d6c9153cc0aec8b7520"
}
]
],
[
"Mime-Version",
"1.0"
],
[
"Subject",
"Test deliver webhook"
],
[
"From",
"Bob <bob@>"
],
[
"To",
"Alice <alice@example.com>"
],
[
"Message-Id",
"<20130503182626.18666.16540@mkt>"
],
[
"X-Mailgun-Variables",
"{\"my_var_1\": \"Mailgun Variable #1\", \"my-var-2\": \"awesome\"}"
],
[
"Date",
"Fri, 03 May 2013 18:26:27 +0000"
],
[
"Sender",
"bob@mkt."
]
]
Obrigado, vou tentar.
Estou usando Sql Server. Quando gravo na base os acentos ficam assim: "n├â┬úo" era para ser o "não".
Eu estou começando com PHP agora, to quebrando a cabeça.
Aqui por exemplo
if($array[0]=='Subject')
echo $array[1];
O $array[1] que retorna o assunto está vindo assim como disse acima.
Converta tudo para UTF-8, banco, conexao, scripts
Se este json é externo
use esta função
function utf8_converter($array)
{
array_walk_recursive($array, function(&$item, $key){
if(!mb_detect_encoding($item, 'utf-8', true)){
$item = utf8_encode($item);
}
});
return $array;
}
Uso
foreach ($json as $key => $array) {
$array = utf8_converter($array);
...Converti...mudei a Collation para Latin1_General_CI_AS coloquei no topo do php :
header('Content-Type: plain/text; charset=utf-8');
Leia e tente entender o erro
http://rberaldo.com.br/problemas-com-codificacao-acentos-nao-interpretados/
Willians eu to rodando o PHP no Windows. Mudei para a versão 5.4 e o código abaixo não roda.
@mssql_connect($dbhost,$user,$password) or die("Não foi possível a conexão com o servidor!");
@mssql_select_db("$db") or die("Não foi possível selecionar o banco de dados!");
Sabe pq?
Nunca usei estas funções mssql_, mas acredito que ela, assim como outras, foram depreciadas depois da versão 5.3
Retire as arrobas @ do code para mostrar os erros "Warnings", de repente os drivers não esteja habilitados, para isso use phpinfo
Como a microsoft tem seu próprio conjunto de drivers, de uma olhada no link abaixo:
http://www.microsoft.com/en-us/download/details.aspx?id=20098
Ps.: Te aconselho a usar PDO para as abstrações do DB, e não ficar dependente de uma função especifica.
Resolvi o problema da conexão, só o acento que ainda não estou conseguindo gravar corretamente no SQL SERVER.
o Não está assim "não"
Algum collation está confuso.
Você mudou o collation do banco pra Latin e quer que exiba como UTF8? Não entendo isso.
"Dá um confere" se:
Independente de banco de dados, como eu faço para que a string json converta para o padrão iso.
Quando eu uso o código abaixo para converter eu array eu preciso que o acento que correto.
$data = json_decode($json, true);
Tentei usar a função que o Willianms passou mas não deu certo.
function utf8_converter($array)
{
array_walk_recursive($array, function(&$item, $key){
if(!mb_detect_encoding($item, 'utf-8', true)){
$item = utf8_encode($item);
}
});
return $array;
}
o "é" por exemplo está vindo assim : Ã%
eu tentei usar o htmentities e deu nisso: "É"
mas o que preciso mesmo seria: "é"
>
Converti...mudei a Collation para Latin1_General_CI_AS coloquei no topo do php :
Não sei se já mudou para UTF-8, mas se quer usar utf-8, não faz sentido manter Latin
Tenta mudar as configurações no php.ini pelo php, setando no ini_set antes de chamar sua conexão.
<?php
ini_set('mssql.charset', 'UTF-8');
mssql_connect($dbhost,$user,$password) or die("Não foi possível a conexão com o servidor!");
ou monte uma função
mb_detect_encoding($value, mb_detect_order(), true) === 'UTF-8' ? $value : mb_convert_encoding($value, 'UTF-8');
ou ve se isso funciona no mssql
mssql_query("SET NAMES 'utf8'");
Para que funcione corretamente, tudo tem que estar em utf-8 como já foi falado, não adianta nada se seu banco, ou tabela, ou campo da tabela estiver em outra codificação.
Williams, mas como eu faço para alterar o acento para o português normal? Imagina que não fosse gravar no banco, que quisesse só printar na tela com a acentuação correta.
Como ficaria?
Use json_decode para decodificar, foreach para percorrer o array
no caso de multipart/alternative é um objeto, so precorrer novamente com foreach
Code