这个查询:
\n\nSELECT customer_id, customer_name FROM customers WHERE isActive = '1' ORDER BY customer_name ASC
输出:
\n\n+-------------+-----------------------+\n| customer_id | customer_name |\n+-------------+-----------------------+\n| 1 | \xc3\x84name |\n| 2 | Aname |\n| 3 | Bname |\n+-------------+-----------------------+\nRun Code Online (Sandbox Code Playgroud)\n\n即使我有排序规则,为什么它不对特殊的瑞典字符进行排序utf8_swedish_ci
SHOW TABLE STATUS FROM myDatabase WHERE name = 'customers';\n\n+-------------+----------------------------+\n| Name | Engine | Collation |\n+-------------+----------------------------+\n| customers | MyISAM | utf8_swedish_ci |\n+-------------+----------------------------+\nRun Code Online (Sandbox Code Playgroud)\n\n我什至尝试将排序规则放入我的查询中:
\n\nSELECT * FROM customers WHERE isActive = 1 COLLATE utf8_swedish_ci ORDER BY customer_name ASC\nRun Code Online (Sandbox Code Playgroud)\n\n但后来我得到:
\n\n …我会很清楚:在 MySQL 中创建视图的解决方案是什么,而没有该死的非法混合排序错误。
我的 SQL 代码是这样的(它有一些葡萄牙语单词),我的数据库默认排序规则是latin1_swedish_ci:
CREATE VIEW v_veiculos AS
SELECT
v.id,
v.marca_id,
v.modelo,
v.placa,
v.cor,
CASE v.combustivel
WHEN 'A' THEN 'Álcool'
WHEN 'O' THEN 'Óleo Diesel'
WHEN 'G' THEN 'Gasolina'
ELSE 'Não Informado'
END AS combustivel,
marcas.marca,
/*I think that the CONCAT and COALESCE below causes this error, when the next line the view works fine*/
CONCAT(marca, ' ', v.modelo, ' - Placa: ', v.placa, ' - Combustível: ', COALESCE(v.combustivel, 'Não informado')) AS info_completa
FROM …Run Code Online (Sandbox Code Playgroud) 我找到了很多关于排序规则和重音不敏感搜索的答案,阅读了大约 1000 个关于这个问题的帖子和文章,但没有找到答案。
\n有谁知道如何强制 MySQL 对所有波兰语字符不区分重音进行搜索?也许有人得到了一个已编译的整理文件(Debian)?
\n请注意:
\nutf8_general_ci没有帮助。它不能\xc5\x81正确支持。但它确实破坏了搜索顺序。utf8_unicode_ci没有帮助。与上面相同。我真的不明白为什么 MySQL 工作人员不将此视为错误。很明显,确实如此,而且已经存在很多年了。从 4.xx 开始,他们的\xc5\x9a字母正确了……那为什么不呢\xc5\x81?!
我找到了一些对此 MySQL 功能的参考,但没有有关如何使用它的信息。我不太明白那里写的是什么以及它是否可以帮助我。
\n测试:
\nmysql> show full columns from test;\n+-------+--------------+----------------+------+-----+---------+-------+---------------------------------+---------+\n| Field | Type | Collation | Null | Key | Default | Extra | Privileges | Comment |\n+-------+--------------+----------------+------+-----+---------+-------+---------------------------------+---------+\n| str | varchar(255) | utf8_polish_ci | YES | | NULL | | select,insert,update,references …Run Code Online (Sandbox Code Playgroud) 我在 PostgreSQL 中有一个排序问题,数据如下:
name
-----
@CF
@CG
CD
CE
Run Code Online (Sandbox Code Playgroud)
我用过select name from table order by name,结果如下:
name
-----
CD
CE
@CF
@CE
Run Code Online (Sandbox Code Playgroud)
似乎 Postgres 只是忽略了特殊字符@并对左边的字符串进行了排序。但是,我希望它是这样排序的:
name
-----
@CF
@CG
CD
CE
Run Code Online (Sandbox Code Playgroud)
搜索互联网没有帮助。我希望这里有人可以提出建议。
我想在 H2 数据库中创建一个 H2 列,以具有其他排序规则(不区分大小写),然后其他列(区分大小写)。
在 MySQL 中我会这样做:
ALTER TABLE users MODIFY login VARCHAR(255) COLLATE utf8_general_ci
Run Code Online (Sandbox Code Playgroud)
H2中有类似的功能吗?
我用法语开发了一个网站,我面临国家列表的法语单词混乱。任何人都可以让我知道语言表的法语应该使用哪种归类类型?
链接:http : //www.atlasanesp.mr/register.php
请查看标题为“Pays de résidence”的下拉菜单
我在我的 php 文件的顶部包含了这个:
<?php
header('Content-Type: text/html; charset=UTF-8');
?>
Run Code Online (Sandbox Code Playgroud)
我这样做是因为我的 file.php 没有在 html 文件或从我的数据库查询的数据中显示“á、é、í、ó、ú 或 ¿”。
在我放置了 'header('Content-Type: text/html; charset=UTF-8');' 之后 代码行我的 html 页面开始理解 html 文件中的特殊字符,但是,从我的数据库收到的数据现在有一个带问号的黑色菱形。
我的数据库的排序规则是“utf8_spanish_ci”
在 html 标签中,我尝试放置 lang=es 但这从未奏效我也尝试将元标签放入 head 标签中
<!DOCTYPE html>
<html lang=es>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<head>
Run Code Online (Sandbox Code Playgroud)
我也试过:
<meta charset="utf-8">
Run Code Online (Sandbox Code Playgroud)
和:
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
Run Code Online (Sandbox Code Playgroud)
我不知道是什么问题。当我将数据直接插入数据库时,特殊字符就在那里,但是当我从 file.php 插入它们时,它们会出现随机字符。
有谁知道为什么会这样?
运行服务器端代码时出现以下异常。
\n\n\nRun Code Online (Sandbox Code Playgroud)FATAL 2018-04-25 14:41:59,757 [1 ] Abp.AbpBootstrapper \n- Microsoft.EntityFrameworkCore.DbUpdateException: An error occurred while updating the entries. See the inner exception for details. --->\nMySql.Data.MySqlClient.MySqlException: Incorrect string value:\n\'\\xD8\\xA7\\xD9\\x84\\xD8\\xB9...\' for column \'DisplayName\' at row 1 --->\nMySql.Data.MySqlClient.MySqlException: Incorrect string value:\n\'\\xD8\\xA7\\xD9\\x84\\xD8\\xB9...\' for column \'DisplayName\' at row 1 at\nSystem.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at\nSystem.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task\ntask) at\nSystem.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1.ConfiguredValueTaskAwaiter.GetResult()\nat\nMySqlConMyCompanytor.Core.ResultSet.<ReadResultSetHeaderAsync>d__1.MoveNext()\nin\nC:\\projects\\mysqlconMyCompanytor\\src\\MySqlConMyCompanytor\\Core\\ResultSet.cs:line\n43 --- End of inner exception stack trace --- at\nMySql.Data.MySqlClient.MySqlDataReader.ActivateResultSet(ResultSet\nresultSet) in\nC:\\projects\\mysqlconMyCompanytor\\src\\MySqlConMyCompanytor\\MySql.Data.MySqlClient\\MySqlDataReader.cs:line\n92 at\nMySql.Data.MySqlClient.MySqlDataReader.<ReadFirstResultSetAsync>d__65.MoveNext()\nin\nC:\\projects\\mysqlconMyCompanytor\\src\\MySqlConMyCompanytor\\MySql.Data.MySqlClient\\MySqlDataReader.cs:line\n297\n--- End of stack trace from previous location where exception was thrown --- at\nSystem.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at\nSystem.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task\ntask) at\nMySql.Data.MySqlClient.MySqlDataReader.<CreateAsync>d__64.MoveNext()\nin\nC:\\projects\\mysqlconMyCompanytor\\src\\MySqlConMyCompanytor\\MySql.Data.MySqlClient\\MySqlDataReader.cs:line\n287\n--- End of stack trace from previous location …
我使用PHP和MySQL制作了一个带有注释的简单新闻系统,它在我的本地Apache服务器上运行得很好,包括我的Fedora 10机器和我的Windows 7机器.现在我遇到了一个问题,我把它上传到了一个网络主机,并且它继续将所有'和'作为\'和\"返回.
我相信这是Web主机,出于安全原因自动添加它们或者MySQL是错误的排序规则,但是我还没有能够解决它,测试多个MySQL排序规则.
以下是查询示例:
mysql_query("INSERT INTO news (title, poster, text, time) VALUES ('$newstitle', '1', '$newstext', '$time')") or die(mysql_error());
Run Code Online (Sandbox Code Playgroud)
$time是time();
$newstitle和$newstext来自被解析$_POST无一不是通过跑mysql_real_escape_string()之前我运行查询(我想这可能是问题,但因为它是安全的一部分,我只是不想删除它,因为它没有导致问题在我的本地服务器上)
最后一点:在我的本地apache服务器上,我latin1_swedish_ci在Web主机服务器上无法正常工作.
编辑:
它们在数据库中看起来像这样:
\'\'\'\"\"\"
Run Code Online (Sandbox Code Playgroud)
虽然在我的本地,他们没有额外的反斜杠,所以它必须是PHP添加它.有没有办法解决这个问题,除了添加一个删除额外反斜杠的函数?
我有一种情况,经过几年的使用,我们突然有一些JSON编码的值,由于反斜杠,我们的Perl脚本适合.
问题是í和é等重音字符.一个例子是Matí编码为Mat\ud873.
目前尚不清楚环境中可能发生的变化.涉及PHP,Perl和MySQL.表格排序是latin1_swedish_ci,这可能是由一个同事搞砸了.
这对任何人都响铃吗?