问题标签 [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.

0 投票
8 回答
16033 浏览

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 就足够了?

谢谢,亚历克斯

0 投票
1 回答
760 浏览

c# - 阅读网站的编码问题,三种不同的编码

WebRequest我在 C# 中有一个问题。这是一个谷歌页面。

标题说明

该网站称

最后,当我使用Encoding.Default默认为System.Text.SBCSCodePageEncoding

现在我该怎么办?您有任何提示,这是如何发生的或我如何解决这个问题?

页面的实际编码似乎是 UTF-8。至少 FF 在 UTF-8 中正确显示它,而不是在 Windows-Whatever 中,也不是在 Latin1 中。

网址是这个

问题在于欧元符号以及所有德语变音符号。

提前感谢您对这个问题的帮助,这让我非常抓狂!

更新:当我通过输出字符串时

一切正常。

所以问题似乎是,调试器没有显示正确的编码,也没有显示正则表达式。

如何告诉 C# 将 RegEx 处理为 UTF-8?

0 投票
3 回答
15599 浏览

database - 在 Linux 上为 PostgreSQL 配置语言环境

我无法设置和运行特定的数据库。我正在尝试恢复从其他人那里获得的 postgreSQL 转储。我尝试了几种方法都无济于事。

  1. 直接来自 pg_restore

    pg_restore -C -d postgres --exit-on-error maggie_prod_20111221.dump.sql

  2. 首先创建数据库和表空间

    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 做到这一点?另外,当我尝试打开转储时,我看到很多垃圾字符,我假设这是因为编码,我该如何正确看待它?

谢谢你的帮助。

0 投票
3 回答
3270 浏览

postgresql - PostgreSQL 在订购时忽略破折号

我有一个使用 da_DK.utf8 语言环境创建的 PostgreSQL 8.4 数据库。

当我从表中选择一些东西时,我在字符变化列上排序时,我得到了一个奇怪的行为 IMO。在排序结果时,PostgreSQL 会忽略值前缀的破折号,例如:

可能会返回类似的东西

破折号前缀似乎被忽略了。

我可以通过在订购时将列转换为 latin1 来解决此问题:

我得到了预期的结果:

为什么默认情况下会忽略破折号前缀?这种行为可以改变吗?

0 投票
1 回答
112 浏览

mysql - MySQL 视图包含具有不同(?)字符编码的表

我正在构建一个跨数据库视图,该视图整合了来自两个不同子系统的数据以进行报告。

两个表都使用带有 utf8_general_cl 排序规则的 UTF8 编码。

问题是一个数据库是 utf8,而另一个是 latin1 并设置了 latin1_swedish_cl。

结果是重音字符等来自 latin1 数据库中的表的损坏,尽管这两个表都是 utf8。

我不认为更改整个数据库的字符集是一种选择。

我可以即时转换字符串吗?我试过 convert() 但它似乎没有任何效果。

0 投票
2 回答
2113 浏览

postgresql - 默认为 LATIN1 编码的语言环境

我正在尝试在 postgresql 中创建一个新的数据库集群,默认为 LATIN1 编码,或者至少支持它。有人知道我可以使用什么语言环境吗?我在 Windows 7 64 位

谢谢

0 投票
1 回答
20808 浏览

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 我正在使用以便不同的类知道这一点,那么它就可以工作。

然后我得到这个输出:

看起来应该如此。

0 投票
1 回答
1163 浏览

php - 非 latin1 字符的 mb_detect_encoding() 差异

我正在使用 mb_detect_encoding() 函数来检查字符串是否包含非 latin1 (ISO-8859-1) 字符。

由于日语不是 latin1 的一部分,因此我将其用作测试字符串中的文本,但是当将字符串传递给函数时,对于 ISO-8859-1,它似乎返回 ok。示例代码:

我试过使用'ASCII'而不是'ISO-8859-1',它正确返回false。有人能解释这种差异吗?

0 投票
2 回答
4639 浏览

mysql - 使用 JDBC 检索 latin1 编码的结果

我正在尝试从 MySQL 数据库中检索结果集,然后使用 JDBC 生成 BiRT 中的报告。连接字符串在 BiRT 中设置。

数据库是latin1:

所以我一直在尝试纠正返回的奇怪的编码结果(德语字符)。我认为使用“characterSetResults”属性将结果集检索为“latin1”对我们来说是有意义的,如下所示:

此连接字符串失败,通过推断我发现它是属性:

导致连接失败。该错误是一个长 java 错误,对我来说意义不大。它开始于:

如果我将其更改为:

连接字符串连接没有错误,但编码问题仍然存在。

有谁知道检索 latin1 的正确方法?是的,我知道要使用 UTF8,但这不是我的数据库....

感谢您阅读本文,斯蒂芬

0 投票
1 回答
256 浏览

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 字符集的情况下有更好的解决方案来解决“密钥太长”问题,我想知道它。