问题标签 [latin1]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
mysql - 在 MySQL 中何时使用 utf-8 以及何时使用 latin1?
我知道MySQL有默认的latin1编码,显然它需要 1 个字节来存储一个latin1中的字符和 3 个字节来存储一个utf-8中的字符- 对吗?
我正在开发一个希望在全球范围内使用的网站。我绝对需要utf-8吗?或者我可以使用 latin1 吗?
另外,我尝试将一些表从latin1更改为utf8,但出现此错误:
Speficief key was too long; max key length is 1000 bytes
有人知道解决方案吗?我真的应该解决这个问题还是 latin1 就足够了?
谢谢,亚历克斯
c# - 阅读网站的编码问题,三种不同的编码
WebRequest
我在 C# 中有一个问题。这是一个谷歌页面。
标题说明
该网站称
最后,当我使用Encoding.Default
默认为System.Text.SBCSCodePageEncoding
现在我该怎么办?您有任何提示,这是如何发生的或我如何解决这个问题?
页面的实际编码似乎是 UTF-8。至少 FF 在 UTF-8 中正确显示它,而不是在 Windows-Whatever 中,也不是在 Latin1 中。
网址是这个
问题在于欧元符号以及所有德语变音符号。
提前感谢您对这个问题的帮助,这让我非常抓狂!
更新:当我通过输出字符串时
一切正常。
所以问题似乎是,调试器没有显示正确的编码,也没有显示正则表达式。
如何告诉 C# 将 RegEx 处理为 UTF-8?
database - 在 Linux 上为 PostgreSQL 配置语言环境
我无法设置和运行特定的数据库。我正在尝试恢复从其他人那里获得的 postgreSQL 转储。我尝试了几种方法都无济于事。
直接来自 pg_restore
pg_restore -C -d postgres --exit-on-error maggie_prod_20111221.dump.sql
首先创建数据库和表空间
createdb -T template0 maggieprod -E LATIN1
SQL:
CREATE TABLESPACE magdat OWNER maggie LOCATION '/somewhere/magdat';
pg_restore -v -d template1 maggie_prod_20110121.dump.sql
使用第一种方法,我得到以下信息:
pg_restore: [archiver (db)] Error while PROCESSING TOC:
pg_restore: [archiver (db)] Error from TOC entry 2308; 1262 16386 DATABASE maggieprod postgres
pg_restore: [archiver (db)] could not execute query: ERROR: encoding LATIN1 does not match locale en_CA.utf8
DETAIL: The chosen LC_CTYPE setting requires encoding UTF8.
Command was: CREATE DATABASE maggieprod WITH TEMPLATE = template0 ENCODING = 'LATIN1' TABLESPACE = magdat;
使用第二个,当我尝试创建数据库时,我得到:
createdb: database creation failed: ERROR: encoding LATIN1 does not match locale en_CA.utf8
DETAIL: The chosen LC_CTYPE setting requires encoding UTF8.
所以似乎我无法创建 LATIN1 编码数据库?这是为什么?我是语言环境和编码的新手,对它们不太了解。我只知道转储是由 LATIN1 数据库制作的。
的输出locale
是:
LANG=en_CA.utf8
LC_CTYPE="en_CA.utf8"
LC_NUMERIC="en_CA.utf8"
LC_TIME="en_CA.utf8"
LC_COLLATE="en_CA.utf8"
LC_MONETARY="en_CA.utf8"
LC_MESSAGES="en_CA.utf8"
LC_PAPER="en_CA.utf8"
LC_NAME="en_CA.utf8"
LC_ADDRESS="en_CA.utf8"
LC_TELEPHONE="en_CA.utf8"
LC_MEASUREMENT="en_CA.utf8"
LC_IDENTIFICATION="en_CA.utf8"
LC_ALL=
的输出locale -a
是:
C
en_AG
en_AG.utf8
en_AU.utf8
en_BW.utf8
en_CA.utf8
en_DK.utf8
en_GB.utf8
en_HK.utf8
en_IE.utf8
en_IN
en_IN.utf8
en_NG
en_NG.utf8
en_NZ.utf8
en_PH.utf8
en_SG.utf8
en_US.utf8
en_ZA.utf8
en_ZW.utf8
POSIX
我在第二个命令中没有看到 LATIN1,是吗?如果是这样,我将如何添加它?假设我需要更改计算机上的区域设置对我来说是否正确?如果是这样,有没有办法只为 postgreSQL 做到这一点?另外,当我尝试打开转储时,我看到很多垃圾字符,我假设这是因为编码,我该如何正确看待它?
谢谢你的帮助。
postgresql - PostgreSQL 在订购时忽略破折号
我有一个使用 da_DK.utf8 语言环境创建的 PostgreSQL 8.4 数据库。
当我从表中选择一些东西时,我在字符变化列上排序时,我得到了一个奇怪的行为 IMO。在排序结果时,PostgreSQL 会忽略值前缀的破折号,例如:
可能会返回类似的东西
破折号前缀似乎被忽略了。
我可以通过在订购时将列转换为 latin1 来解决此问题:
我得到了预期的结果:
为什么默认情况下会忽略破折号前缀?这种行为可以改变吗?
mysql - MySQL 视图包含具有不同(?)字符编码的表
我正在构建一个跨数据库视图,该视图整合了来自两个不同子系统的数据以进行报告。
两个表都使用带有 utf8_general_cl 排序规则的 UTF8 编码。
问题是一个数据库是 utf8,而另一个是 latin1 并设置了 latin1_swedish_cl。
结果是重音字符等来自 latin1 数据库中的表的损坏,尽管这两个表都是 utf8。
我不认为更改整个数据库的字符集是一种选择。
我可以即时转换字符串吗?我试过 convert() 但它似乎没有任何效果。
postgresql - 默认为 LATIN1 编码的语言环境
我正在尝试在 postgresql 中创建一个新的数据库集群,默认为 LATIN1 编码,或者至少支持它。有人知道我可以使用什么语言环境吗?我在 Windows 7 64 位
谢谢
c++ - 使用 UTF-8 或 Latin1 编码将 QString 转换为 QByteArray
我想将 QString 转换为 utf8 或 latin1 QByteArray,但今天我将所有内容都转换为 utf8。
我正在用高于 0x7f 的 latin1 较高段中的一些字符对此进行测试,其中德语 ü 就是一个很好的例子。
如果我这样做:
我得到以下输出。
正如你所看到的,我到处都得到了 unicode 0xc3bc,我希望在第 2 步和第 3 步得到 Latin1 0xfc。
我的猜测是我应该得到这样的东西:
这里发生了什么?
/谢谢
一些字符表的链接:
此代码是在基于 Ubuntu 10.04 的系统上构建和执行的。
如果我尝试使用
我得到这个输出
所以 latin1 是 unicode 而 utf8 是双重编码的......
这必须取决于某些系统设置?
如果我运行它(无法构建 .name())
然后我得到这个:
解决方案
如果我指定它是 UTF-8 我正在使用以便不同的类知道这一点,那么它就可以工作。
然后我得到这个输出:
看起来应该如此。
php - 非 latin1 字符的 mb_detect_encoding() 差异
我正在使用 mb_detect_encoding() 函数来检查字符串是否包含非 latin1 (ISO-8859-1) 字符。
由于日语不是 latin1 的一部分,因此我将其用作测试字符串中的文本,但是当将字符串传递给函数时,对于 ISO-8859-1,它似乎返回 ok。示例代码:
我试过使用'ASCII'而不是'ISO-8859-1',它正确返回false。有人能解释这种差异吗?
mysql - 使用 JDBC 检索 latin1 编码的结果
我正在尝试从 MySQL 数据库中检索结果集,然后使用 JDBC 生成 BiRT 中的报告。连接字符串在 BiRT 中设置。
数据库是latin1:
所以我一直在尝试纠正返回的奇怪的编码结果(德语字符)。我认为使用“characterSetResults”属性将结果集检索为“latin1”对我们来说是有意义的,如下所示:
此连接字符串失败,通过推断我发现它是属性:
导致连接失败。该错误是一个长 java 错误,对我来说意义不大。它开始于:
如果我将其更改为:
连接字符串连接没有错误,但编码问题仍然存在。
有谁知道检索 latin1 的正确方法?是的,我知道要使用 UTF8,但这不是我的数据库....
感谢您阅读本文,斯蒂芬
mysql - 对于为 OAuth 使用而创建的 MySQL 表,使用 latin1 而不是 utf8 有什么影响?
我正在共享服务器上设置 OAuth 支持。我要安装的服务器端 PHP OAuth 库是这个:
http://code.google.com/p/oauth-php/downloads/list
我正在关注此处的安装说明:
http://code.google.com/p/oauth-php/wiki/ConsumerHowTo
在注释中有使用安装包中的 SQL 脚本为您设置表和数据库的提示。当我尝试通过 phpMyAdmin 中的导入 (SQL) 功能执行脚本时,我在其中一张表上收到“密钥太长”错误。换句话说,我遇到了使用 MySQL/InnoDB 表时发现的最大键长度限制。
为了解决这个问题,我将所有“charset=utf8”实例替换为“charset=latin1”,因为 utf8 每个字符需要 3 个字节,而 latin1 每个字符需要 1 个字节。该脚本执行良好,所有表均已正确创建。
据我所知,表中使用的所有字段都不需要支持多字节国际字符。我看到问题发展的唯一方法是,如果我访问的 OAuth 连接服务之一在其消费者密钥或秘密中使用国际字符,到目前为止我还没有遇到过这种情况。
谁能告诉我这种解决方法是否会在任何时候以及在哪里咬我?此外,如果有人在不牺牲使用 utf8 字符集的情况下有更好的解决方案来解决“密钥太长”问题,我想知道它。