草庐IT

mysql - rails mysql 编码问题/问题 - Mysql::Error: 非法混合排序规则 (latin1_swedish_ci,IMPLICIT) 和 (utf8_general_ci,COERCIBLE)

Rails2.3.5、Ruby1.8.7和Mysql5.1.53我正在加载一个csv文件,它有一个字段,里面有TM符号(商标)TartDeco™-看起来像这样我正在尝试查找事件记录:Influencer.find(:first,:conditions=>["author_name=?andurl_discovered=?",author_name,site_profile_url])Mysql::Error:操作'='的排序规则(latin1_swedish_ci,IMPLICIT)和(utf8_general_ci,COERCIBLE)的非法混合:SELECT*FROMinfluen

php - 使用 PHP 将 latin1_swedish_ci 转换为 utf8

我有一个数据库,其中包含♥•â—♥Dhaka♥•â—♥(应该是♥•●♥Dhaka♥•●♥)因为我在创建数据库时没有指定排序规则。现在我想修复它。我无法再次从最初获取数据的位置获取数据。所以我在想是否有可能在php脚本中获取数据并将其转换为正确的字符。我已将数据库和字段的排序规则更改为utf8_general_ci.. 最佳答案 排序规则与字符集不同。排序规则仅用于文本的排序和比较(这就是其中有一个语言术语的原因)。实际字符集可能不同。最常见的故障不在数据库中,而是在PHP和MySQL之间的连接中。连接的默认字

mysql - 在 MySQL 中何时使用 utf-8 以及何时使用 latin1?

我知道MySQL具有默认的latin1编码,显然在latin1中存储一个字符需要1个字节,存储需要3个字节utf-8中的一个字符-对吗?我正在开发一个希望在全局范围内使用的网站。我绝对需要utf-8吗?或者我可以使用latin1吗?另外,我尝试将一些表从latin1更改为utf8,但出现此错误:特定键太长;最大key长度为1000字节有谁知道这个问题的解决方案?我真的应该解决这个问题还是latin1就足够了?谢谢,亚历克斯 最佳答案 ittakes1bytetostoreacharacterinlatin1and3bytestost

sql - MySQL - 非法混合排序规则 (utf8_general_ci,COERCIBLE) 和 (latin1_swedish_ci,IMPLICIT) 用于操作 'UNION'

如何一劳永逸地修复该错误?我只想能够在MySQL中进行联合。(我正在寻找一个捷径,比如让MySQL忽略该问题或采取最佳猜测的选项,而不是要更改100多个表的排序规则......至少现在不是) 最佳答案 不确定mySQL,但在MSSQL中,您可以更改查询中的排序规则,例如,如果您有2个具有不同排序规则的表,并且您想要加入它们,或者在您的情况下crateUNION,您可以这样做selectcolumn1fromtableWithProperCollationunionallselectcolumn1COLLATESQL_Latin1_G

mysql - 如何在 Latin1 编码列中检测 UTF-8 字符 - MySQL

我即将承担将数据库从Latin1转换为UTF-8的繁琐且充满陷阱的任务。此时我只想检查表中存储的数据类型,因为这将决定我应该使用哪种方法来转换数据。具体来说,我想检查Latin1列中是否有UTF-8字符,最好的方法是什么?如果只有几行受到影响,那么我可以手动修复它。选项1。执行MySQL转储并使用Perl搜索UTF-8字符?选项2.使用MySQLCHAR_LENGTH查找具有多字节字符的行?例如SELECTnameFROMclientsWHERELENGTH(name)!=CHAR_LENGTH(name);够了吗?目前我已将我的Mysql客户端编码切换为UTF-8。

mysql - 在MySQL中,这是什么意思?/*!40100 DEFAULT CHARACTER SET latin1 */

/*!40100DEFAULTCHARACTERSETlatin1*/为什么在注释标记之间?40100是什么意思?什么是!为了?它有什么作用?这方面的文档在哪里? 最佳答案 MySQL可以解释的条件注释代码40100表示只有这些版本的MySQL>=4.1.0(4.01.00)会解释条件注释。这里的!是强制MySQL解析/*...*/之间的代码它设置参数DEFAULTCHARACTER='latin1'的值,以便在导入期间可以正确解释SQL转储中的数据。它不影响数据库结构,只是帮助导出/导入过程正常工作。http://dev.mysq

mysql - COLLATION 'utf8_general_ci' 对 CHARACTER SET 'latin1' 无效

我正在尝试修复字符编码问题-之前我们为该列设置了排序规则utf8_general_ci导致问题,因为它不区分重音..我正在尝试查找数据库中可能受到影响的所有条目。setnamesutf8;select*fromtable1t1jointable2t2on(t1.pid=t2.pidandt1.id!=t2.id)collateutf8_general_ci;但是,这会产生错误:ERROR1253(42000):COLLATION'utf8_general_ci'isnotvalidforCHARACTERSET'latin1'现在使用DEFAULTCHARACTERSETutf8定义数

mysql - 如何将所有行的排序规则从 latin1_swedish_ci 更改为 utf8_unicode_ci?

在开发过程中,我无知地对数据库中的所有varchar行使用了默认的latin1_swedish_ci字符编码,并且我确定这是我一直遇到的字符编码问题的根源。除此之外,现在似乎大多数人都建议使用utf8_unicode_ci。我想将我数据库中所有行的字符编码从latin1_swedish_ci转换为utf8_unicode_ci,但我知道如何做的唯一方法是在phpMyAdmin中逐行更改它,这真的很耗时。是否有更快的方法,例如可以运行将所有varchar/text行的排序规则从latin1_swedish_ci更改为utf8_unicode_ci的查询? 最佳

java - 设置土耳其语和英语语言环境 : translate Turkish characters to Latin equivalents

我想在英语和土耳其语环境中将我的土耳其语字符串翻译成小写。我正在这样做:StringmyString="YAŞATBAYRI";Localetrlocale=newLocale("tr-TR");LocaleenLocale=newLocale("en_US");Log.v("mainlist","ensource:"+myString.toLowerCase(enLocale));Log.v("mainlist","trsource:"+myString.toLowerCase(trlocale));输出是:ensource:yaşarbayritrsource:yaşarbayri

php - 将 UTF8 表上的 latin1 字符转换为 UTF8

直到今天我才意识到我的PHP脚本中缺少这个:mysql_set_charset('utf8');我所有的表都是InnoDB,排序规则“utf8_unicode_ci”,我所有的VARCHAR列也是“utf8_unicode_ci”。我的PHP脚本上有mb_internal_encoding('UTF-8');,我所有的PHP文件都编码为UTF-8。所以,直到现在,每次我“插入”带有变音符号的东西时,例如:mysql_query('INSERTINTO`table`SET`name`="JáuòIñe"');在本例中,“名称”内容为:JáuòIñe。由于我修复了PHP和MySQL之