PHP libraries JSON encoding error
PHP libraries JSON encoding error
AloneInTheDark
Posts: 30Questions: 7Answers: 0
Code:
use
DataTables\Editor,
DataTables\Editor\Field,
DataTables\Editor\Format,
DataTables\Editor\Mjoin,
DataTables\Editor\Options,
DataTables\Editor\Upload,
DataTables\Editor\Validate,
DataTables\Editor\ValidateOptions;
$editor = Editor::inst( $db, 'edoc_document_request as document_request', 'id_edoc' )
->fields(
Field::inst( 'document_request.id_edoc' )
,Field::inst( 'document_request.id_user' )
,Field::inst( 'document_request.tipo_di_richiesta' )
,Field::inst( 'document_request.descrizione' )
,Field::inst( 'document_request.descrizione_chiusura_forzata' )
,Field::inst( 'wp_users.display_name' )
->options( Options::inst()
->table( 'wp_users' )
->value( 'ID' )
->label( 'display_name' )
)
,Field::inst( 'compiti_istituzionali.descrizione' )
->options( Options::inst()
->table( 'edoc_compiti_istituzionali' )
->value( 'id_compiti_istituzionale' )
->label( 'descrizione' )
)
,Field::inst( 'campi_applicazione.descrizione' )
,Field::inst( 'document_request.file_dichiarazione_unicita' )->setFormatter( Format::ifEmpty( '' ) )
,Field::inst( 'document_request.file_preventivi' )
->setFormatter( Format::ifEmpty( '' )
)
,Field::inst( 'document_request.file_fattura' )
->setFormatter( Format::ifEmpty( '' )
)
,Field::inst( 'document_request.file_bozza_oda' )
->setFormatter( Format::ifEmpty( '' )
)
,Field::inst( 'document_request.file_durc' )
->setFormatter( Format::ifEmpty( null ) )
//->upload( Upload::inst( $path_srv. 'durc-__ID__.__EXTN__' )
->upload(Upload::inst( function ( $file, $id ) use ( $db ) {
$extn = pathinfo( $file['name'], PATHINFO_EXTENSION );
$id_edoc=$_REQUEST['id_edoc'];
$protocol = stripos($_SERVER['SERVER_PROTOCOL'],'https') === 0 ? 'https://' : 'http://';
$url_srv=$protocol.$_SERVER['HTTP_HOST'];
//recupero i dati per il vecchio file
$record = $db->query( 'select', 'edoc_document_request' )
->get( "file_durc", "DATE_FORMAT(edoc_document_request.data_creazione,'%Y/%m') as path_file")
->where( 'id_edoc', $id_edoc ,'=' )
->exec()
->fetchAll();
if ($record!=''){
//cancello il vecchio file
$file_durc=$record[0]['file_durc'];
$file_durc=basename($file_durc); //recupero solo il nome del file
unlink(SRV_PATH .$record[0]['path_file'] . "/" . $file_durc);
}
$filename='durc_'.$id_edoc.".".$extn;
$new_path = SRV_PATH .$record[0]['path_file'] . "/" . $filename;
move_uploaded_file( $file['tmp_name'], $new_path );
$db->update(
'edoc_document_request',
array ( //[
"file_durc" => $url_srv . URL_PATH . $record[0]['path_file'] . "/" . $filename
), //],
array ( "id_edoc" => $id_edoc )
);
})
->validator( Validate::fileSize( 500000, 'Il file non può superare 500K' ) )
->validator( Validate::fileExtensions( array( 'png', 'jpg', 'rar', 'pdf', 'zip' ), "Puoi allegare pdf,zip,rar,png,jpg" ) )
)
,Field::inst( 'document_request.id_status_richiesta' )
->options( Options::inst()
->table( 'edoc_stato_richiesta' )
->value( 'id_status' )
->label( 'descrizione' )
->where( function ($db) {
$db->where( 'stato_per_ufficio_contabile', 'Y' );
})
)
,Field::inst( 'document_request.data_ultima_modifica' )
,Field::inst( 'document_request.data_creazione' )
,Field::inst( 'edoc_stato_richiesta.descrizione' )
)
->leftJoin( 'wp_users', 'wp_users.ID', '=', 'document_request.id_user' )
->leftJoin( 'edoc_compiti_istituzionali as compiti_istituzionali', 'compiti_istituzionali.id_compiti_istituzionale', '=', 'document_request.id_compito_istituzionale' )
->leftJoin( 'edoc_campi_applicazione as campi_applicazione', 'campi_applicazione.id_campo_applicazione', '=', 'document_request.id_campo_applicazione' )
->leftJoin( 'edoc_stato_richiesta', 'edoc_stato_richiesta.id_status', '=', "document_request.id_status_richiesta" )
->debug(true)
->process($_POST)
->json();
Description of problem:
Recive this: {"error":"JSON encoding error: Malformed UTF-8 characters, possibly incorrectly encoded"}
How can i set coding?
Edited by Allan - Syntax highlighting. Details on how to highlight code using markdown can be found in this guide.
Answers
Error on this string "pubblicazione articolo scientifico finalizzato a consentire la divulgazione dei risultati delle attività di ricerca"
How can set the encoding?
Resolution add this:
$db->sql("SET character_set_client=utf8");
$db->sql("SET character_set_connection=utf8");
$db->sql("SET character_set_results=utf8");
Thanks, this helped me.
I had the same problem with french text and it's not a database problem, only datatables had trouble with the characters.
I've put these lines in Editor.php for a global fix, not sure if it's really the correct place but it works for me.
Line 135 in version 1.9.7
It entirely depends on how the PHP / MySQL connection is set up and also on the database. Sometimes this is required, sometimes not. Unfortunately, I haven't yet found a way to automatically determine if it is needed or not!
Note that you can also use
$db->sql('set names utf8');
which is basically the same thing, just shorter.Allan