数据表显示查询中的行,在 áéíóúÑ 中带有 �
Posted
技术标签:
【中文标题】数据表显示查询中的行,在 áéíóúÑ 中带有 �【英文标题】:datatables showing row from query with � in áéíóúÑ 【发布时间】:2018-12-05 19:32:45 【问题描述】:我已经准备好使用 DataTables 与 JQuery
和 html
制作一个漂亮的表格。
但是当查询我的db
时,它会在这种字符情况下(几乎)向我显示这样的值。
(Spanish letters) áéíóúÑ
任何建议。
使用的添加数据表代码:
var table = $('#example').DataTable(
// Localization
language :
emptyTable : 'Nada para mostrar.',
zeroRecords : 'Nada coincide.',
thousands : '.',
processing : 'Cargando informacion...',
loadingRecords : 'Cargando Informacion...',
info : ' _PAGE_ / _PAGES_',
infoEmpty : ' 0 / 0',
infoFiltered : '( _MAX_ )',
infoPostFix : '',
lengthMenu : 'Mostrando _MENU_',
search : 'Filtrar:',
paginate :
first : 'Primero',
last : 'Ultimo',
next : 'Siguiente',
previous : 'Previo'
);jquery
【问题讨论】:
服务器端的字符编码(SO 搜索或 Google 的关键字)——有数据库字符集和 HTML 字符集.... UTF-8 适用于生成的页面...和作为数据库的“后端”latin1_swedish_ci
或 utf8_general_ci
工作正常。
嗨,Louis 感谢您的快速回复。这仅发生在 Datatables 在 javascript 端处理的查询上。我在没有 dataTables 的情况下进行测试,字符显示正常
好的...所以您可以echo
使用正确字符的数据吗? (比如<div>
)
database
已经有utf8_spanish_ci
排序规则
好的...所以它 不是 DataTables 插件也不是 jQuery。 -- 这是一个调试步骤。 ;) 我为您找到了exhaustive page 以了解更多信息。
【参考方案1】:
这个问题的解决方案在 PDO 调用上根除。
我错误地使用了两个不同的调用,其中一个没有像这样在调用上使用 utf8 正确配置
try
$pdo = new PDO("mysql:host=".DBHost.";dbname=".DBName."", DBUser, DBPassword);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
catch(PDOException $e)
die("ERROR: Could not connect. " . $e->getMessage());
最后,当添加正确的 utf-8 配置时,所有字符都显示良好。
try
$pdo = new PDO('mysql:dbname=' . $this->DBName . ';host=' . $this->Host . ';port=' . $this->DBPort . ';charset=utf8',
$this->DBUser,
$this->DBPassword,
array(
//For php 5.3.6 or lower
PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'",
PDO::ATTR_EMULATE_PREPARES => false,
//
//PDO::ATTR_PERSISTENT => true,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true
)
);
catch(PDOException $e)
die("ERROR: Could not connect. " . $e->getMessage());
最后的代码解决了这个问题。 谢谢!
【讨论】:
以上是关于数据表显示查询中的行,在 áéíóúÑ 中带有 �的主要内容,如果未能解决你的问题,请参考以下文章
如何完全替换 PHP 中的所有特殊字符而不在结果中留下任何 HTML 实体