UTF-8 和 ISO 8859-9

2024-03-05

在过去的几天里,我一直在阅读有关 UTF-8 和 unicode 的内容,当我以为我已经了解了这一切时,当我读到 UTF-8 和 ISO 8859-9 不兼容时,我感到很困惑。

我有一个以 UTF-8 格式存储数据的数据库。客户要求我支持各种 ISO 8859-x 代码页(即 8859-3、8859-2 以及 ISO 6937)。我的问题是:

  1. 由于我的数据摄取和数据库引擎类型是 UTF-8,假设我使用 unicode 是否正确?

  2. 我知道 unicode 可以支持所有字符,这是可行的方法。但是,我的客户是一家欧洲实体,希望我们使用 ISO 代码页。所以我的问题是如何使用现有的 UTF-8 数据支持多个客户端用例?由于 ISO 8859-x 不是 unicode 的子集,我是否必须根据我的用例编写代码来发送适当的 ISO 8859-x 字符集?这是我需要做的还是还有更多的事情要做?

顺便说一句,我的理解是 UTF-8 只是一种从二进制数据中获取数值的编码算法。如果是这样,如何应用字符集?我是否必须编写代码来返回 8859-x 响应,或者所需要做的只是在响应标头中设置适当的字符集值?


主题相当广泛,所以让我简化(很多,甚至太多)并逐点回答。

由于我的数据摄取和数据库引擎类型是 UTF-8,假设我使用 unicode 是否正确?

Yes, 你正在使用 UNICODE并且您正在存储 UNICODE 字符(正式称为代码点)使用 UTF-8 编码。请注意,UNICODE 定义了规则和字符集(即使同一个单词经常用作 UTF-16 编码的同义词),在字节流中对此类字符进行编码的方式是另一回事。

...但是,我的客户是一家欧洲实体,希望我们使用 ISO 代码页。所以我的问题是如何使用现有的 UTF-8 数据支持多个客户端用例?

当然,如果您存储 UNICODE 字符(使用哪种编码并不重要)那么你可以随时转换它们特定的 ASCII 代码页(或任何其他编码)。好吧,这在形式上并不总是正确的(因为 UNICODE 没有定义过去实际使用/使用的所有可能的字符),但我会忽略这一点......

...由于 ISO 8859-x 不是 unicode 的子集,我是否必须根据我的用例编写代码来发送适当的 ISO 8859-x 字符集?

ISO 8859 中的所有字符代码页也可在 UNICODE 中使用那么(从这个角度来看)它是一个子集。当然编码值不同所以需要转换。如果您知道每个客户所需的代码页,那么您始终可以将 UNICODE UTF-8 编码文本转换为 ASCII(具有正确的代码页)文本。

这是我需要做的还是还有更多的事情要做?

只是。代码可能很短,但您没有用任何语言标记您的问题,因此我不会提供链接/示例。只是一个基本的例子,请看一下这个帖子 https://stackoverflow.com/questions/11156473/is-there-a-way-to-convert-from-utf8-to-iso-8859-1.

我也说一下一件重要的事情:如果他们想使用他们的代码页以 ASCII 形式使用您的数据,那么您必须执行转换。如果它们可以直接使用 UTF-8 数据(或者您在自己的应用程序中以某种方式呈现它们),那么您不必担心代码页(这就是我们使用 UNICODE 的原因),因为 - 无论编码如何 - UNICODE 字符集包含他们可能需要的所有角色。

顺便说一句,我的理解是 UTF-8 只是一种从二进制数据中获取数值的编码算法。

Not exactly. You have a table of characters, right? For example A. Now you have to store a numeric value that will be interpreted as A. In ASCII they arbitrary decided that 65 is the numeric value that represents that character. UNICODE is a long list of characters (and rules to combine them), UTF-X are arbitrary representations used to store them as numeric values.

如果是这样,如何应用字符集?

“字符集”是一个相当模糊的句子。和UNICODE 字符集你的意思是所有可使用 UNICODE 的字符。如果你的意思是代码页那么(简化)它代表可用字符集的子集。想象一下,您有 8 位 ASCII(最多 256 个符号),您无法容纳欧洲使用的所有字符,对吗?代码页解决了这个问题,这些符号的一半始终相同,另一半根据代码页代表不同的字符(每个“国家/地区”将使用特定的代码页及其首选字符)。

有关此主题的介绍性概述:每个软件开发人员绝对必须了解 Unicode 和字符集的绝对最低要求 http://www.joelonsoftware.com/articles/Unicode.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UTF-8 和 ISO 8859-9 的相关文章

  • 将计算列设置为非空时遇到问题

    我在将计算列设置为时遇到问题not null 我想要实现的是C001 C002 等 同时将其设置为not null 我在论坛上读到 这可以通过使用 NULL 值的默认值 0 来实现 E g ISNULL Price Taxes 0 我尝试应
  • 在 SWIXML 中将异常字符显示为按钮文本

    我有以下 SWIXML 代码
  • Python UTF-8转换问题

    在我的数据库中 我存储了一些 UTF 8 字符 例如 名称 字段中的 通过 Django ORM 当我读到这个时 我得到了类似的东西 gt gt gt p name u xce xb1 gt gt gt print p name 我本来希望
  • MySQL:主键的所有部分都必须为 NOT NULL;如果您需要在键中使用 NULL,请使用 UNIQUE 代替

    我的 MySQL 有问题 我创建了名为 BucketList 的数据库 然后尝试创建名为 tbl user 的表 它看起来像这样 CREATE TABLE BucketList tbl user user id BIGINT NULL AU
  • 在C#中,如何检测一个字符是否是非ASCII字符?

    我想在 C 中检查 char 是否包含非 ASCII 字符 检查特殊字符的最佳方法是什么 例如志 or ASCII 范围为 0 127 因此只需检查该范围 char c a or whatever char you have bool is
  • 从 django 返回带有 BOM 的 UTF-8 编码的 csv

    我正在尝试输出一个用户可以用 Excel 打开的 CSV 文件 我已经用 UTF 8 编码了所有字符串 但是当我用 Excel 打开文件时 我看到了乱码 只有在将文件转换为带 BOM 的 UTF 8 在 Windows 上使用 notepa
  • UTF-8 在 Python 日志记录中,如何?

    我正在尝试使用 Python 的日志记录包将 UTF 8 编码的字符串记录到文件中 作为一个玩具示例 import logging def logging test handler logging FileHandler home ted
  • 解析 HTTP 标头值:引用、RFC 5987、MIME 等

    让我困惑的是 HTTP 标头的解码values 示例标头 Some Header quoted string utf 8 en Weirdness 罐头value s被引用 a 的编码怎么样 本身 是 有效的引号字符 分号有什么意义 HTT
  • 仅包含主键和外键的数据库表的用途是什么?

    我试图理解一个简单的音乐数据库设计 有些表只包含外键和主键 我不确定如何以及何时使用这些表或向其中插入什么内容 设计如下 Track id primary key title duration live performance true o
  • 将传入字符串的 unicode 表示形式转换为 UTF-8?

    我正在读取一些已经转换为 html 样式 代码的数据 我现在需要将其转换回 UTF 8 字符以供查看 不幸的是我无法使用浏览器查看该字符串 我读过有关 java 中的转换的内容 似乎如果你有一个 uxxxx 字符串 那么编译器会为你转换 然
  • WPF 应用程序的最佳本地数据库解决方案是什么?

    目前适用于 WPF 应用程序的最佳解决方案是什么一台电脑 where 各种用户登录它们并使用它们在本地获取 保存信息 以下是我看到选项的方式 MDF似乎是最好的选择 因为我假设您可以很好地锁定它 这样即使用户可以访问 mdf 文件 他们仍然
  • django.core.exceptions.ImproperlyConfigured:加载 MySQLdb 模块时出错:没有名为 MySQLdb 的模块

    我在尝试连接 mysql 数据库时遇到的问题 我还给出了我使用过的数据库设置 Traceback most recent call last File manage py line 10 in
  • 什么是标准 unicode 字体?

    以下操作系统的标准 unicode 字体是什么 视窗XP 视窗Vista Window 7 按照标准 我的意思是它们存在于操作系统的全新安装中 无需将它们作为附加包安装 我一直在寻找同样的东西 看起来所有 Win 操作系统中只有一种字体 L
  • 如何跟踪数据库连接泄漏

    我们有一个应用程序似乎存在连接泄漏 SQL Server 表示已达到最大池大小 我独自一人在我的开发机器上 显然 只需导航应用程序 我就会触发此错误 SQL Server 活动监视器显示大量正在使用我的数据库的进程 我想查找哪些文件打开连接
  • 如何在javascript中设置从数据库输入的最大数量?

    我希望根据数据库中的数量设置 输入类型 数字 中输入的最大数量 目前 我正在尝试让它在数据最大的基础上工作 然后再尝试从数据库中获取最大值 但它似乎无法工作 之前已经在这里问过 但我仍然无法理解 在 php javascript 中设置数据
  • 每个“容器”类一个 DAO 还是每个表一个 DAO?

    我有一个 容器 类 其中的字段包含在多个数据库表中 并且我使用 DAO 模式来访问数据 问题是 我应该为这个 容器 类创建一个 DAO 还是每个表都有一个 DAO 并合并它们的数据更好 您应该根据应用程序的需求而不是数据库的布局来设计 DA
  • 如何用 unicode 图像替换字符?

    我怎样才能更换一个 来自数据库到碧玉字段的文本中的字符 带有图像 目标如下图所示 就像是 F KN Zusatzinfo DV Einleitungstext replaceAll x254 哪里的x254是红色方块的ascii 代码 但上
  • 将字段重新格式化为列,其他字段(与先前结构中成为列的字段配对)成为新列中的字段

    我的任务是清理慈善机构设计的移动应用程序中的数据 在一个部分中 用户问答应用程序使用会话由一行表示 该部分由重复的问题答案字段对组成 其中一个字段代表所提出的问题 然后它旁边的字段代表相应的答案 每个问题 字段和答案列对一起代表一个独特的问
  • Node.js 和代码优先

    我使用代码优先方法开发实体框架 现在我正在学习 Node js 我想知道是否有一种方法可以使用 Node js 和一些库来实现相同的代码优先方法 我正在考虑使用MySql作为数据库 你可以看看续集 http docs sequelizejs
  • PHP UTF-8 配置

    我正在使用 PHP 5 3 5 配置 Apache 2 2 17 服务器 我的目标是创建一个默认为内容类型的干净配置UTF 8 php ini default charset UTF 8 default mimetype applicati

随机推荐

  • Python 3、网页抓取和 Javascript [天哪]

    我已经到了使用 Javascript 和 Python3 进入网页抓取混战的阶段 我很清楚我的靴子可能会碰到一匹死马 但我还是想拔出我的六发枪 这是一部意大利式西部片 是我的灰帽子吗 背景故事 我正在使用Python 3 2 3 我有兴趣收
  • 使用谷歌分析数据将嵌套行转置为bigquery中的列

    我感兴趣的是使用自定义维度属性来吸引访问者 其中每一行都是一个唯一的 fullvisitorid 列是所需的自定义维度值 以伦敦头盔为例 在这里我用我感兴趣的两个自定义尺寸来吸引访客 SELECT fullvisitorid customD
  • AWS lambda 与 python asyncio。事件循环闭合问题?

    关闭 aws lambda 中的事件循环会影响未来的 lambda 运行吗 我有一些 aysncio python 代码在 aws lambda 服务中运行 代码逻辑如下 def lambda handler event context l
  • 在 Javascript 中创建多维数组和矩阵

    尝试创建一个函数mCreate 给定一组数字返回一个多维数组 矩阵 mCreate 2 2 2 0 0 0 0 0 0 0 0 当此函数仅处理 2 个深度级别时 即 mCreate 2 2 0 0 0 0 我知道要做 2 个级别 你可以使用
  • 如何使用 Intl 获取 Flutter 中当前语言环境的文本方向

    我正在创建一个新的 flutter UI 组件 其中包含选择并获取有关产品的更多信息 我希望这个组件也支持 RTL 所以我需要获取当前的语言环境方向 这将使我知道选择形状的哪些角将被圆化 The LTR形状代码是这样的 shape Roun
  • Visual studio(MAC)控制台应用程序[重复]

    这个问题在这里已经有答案了 也许你们中的一些人知道 Visual Studio 预览版 已经可以使用了 我有一个简单的问题 也许我做错了什么 或者它不能正常工作 当我开始调试控制台应用程序时 不想让我从键盘读取名称 string name
  • 在 PhpStorm 中设置终端字体大小?

    如何在 JetBrains PhpStorm IDE 的嵌入式终端中设置字体大小 文字太小 这可能吗 LazyOne 已经指出了您可以在哪里更改此设置 https stackoverflow com a 31436405 247893 请记
  • C# Winforms:以编程方式显示按钮悬停状态

    我在 winform 上显示数字键盘来输入代码 我正在显示带有按钮的数字键盘 用户将仅使用键盘数字键盘来输入代码 密码 但当然你可以使用鼠标 如果我们使用鼠标单击按钮 我们会得到蓝色效果来显示悬停和按下状态 我在想我是否可以以某种方式以编程
  • NSDateComponentsFormatter 的 stringFromDate(_, toDate:) 返回 nil

    Question Why is string nil let formatter NSDateComponentsFormatter let referenceDate NSDate timeIntervalSinceReferenceDa
  • 复制文件列表 (txt)

    我见过一些脚本示例 但似乎没有一个提供如何从 t xt 列表中读取文件名的示例 这个例子不错 这样就可以将A文件夹中的所有文件复制到B文件夹中 xcopy c olddir java c newdir D E Q Y 但我需要类似下一个的东
  • Backbone.js 在回退中哈希后斜线 - 历史推送状态

    我在用着Backbone js 的路由 http documentcloud github com backbone Router 它为浏览器生成如下网址 http my app com help 对于 Internet Explorer
  • Kotlin-Kapt 注解处理器无法与 Maven 一起使用

    我想从 kotlin 实体类生成 jpa querydsl 文件 网上有一个非常好的示例 介绍如何使用 gradle 生成 dsl 文件https github com JetBrains kotlin examples blob mast
  • 使用枚举上的 XOR 运算符重载 GetHashCode 和相等运算符

    我有以下课程 它是统计分析包的一部分 The MetricKey对象用作字典键 Decision MetricUnit Portfolio都是枚举 我必须重写相等运算符 才能使字典键匹配工作 我使用了以下指导http msdn micros
  • “为‘System.Windows.Baml2006.TypeConverterMarkupExtension’提供值引发了异常。”行号“49”和行位置“38”

    我正在制作我的第一个 wpf 应用程序 它现在只是实现一个带有纹理的 地板 从上面看 运行时我得到这个异常 在 System Windows Baml2006 TypeConverterMarkupExtension 上提供值 引发异常 行
  • 如何在 GitHub 的文件查看器中软包装代码?

    当我在 GitHub com 上查看文本文件时 如何使其换行而不是水平滚动 在 GitHub 网站编辑器中 我可以从右上角的下拉菜单中选择 软换行 选项 但没有这样的下拉菜单 也没有我在页面上找到的任何选项 可以在查看时也换行代码 我尝试编
  • 加密和解密密码的最佳实践? (C#/.NET)

    我需要在 最好是文本 文件中存储和加密密码 稍后我需要能够解密该密码 该密码用于我使用的另一项服务 需要以明文形式 通过 SSL 发送到那里 这不是我能改变的 该领域的最佳实践是什么 如何才能在一定程度上保护密码免受恶意用户的侵害 我的平台
  • 如何在libavcodec中设置解码像素格式?

    我使用以下代码通过 libavcodec 解码视频 Open input file if avformat open input ctx filename NULL NULL 0 return FALSE Couldn t open fil
  • Angular 2 - 如何嵌入 youtube 视频

    我得到了这个代码 div div class video container div div 问题 角度将输出src localhost 8001 代替src https www youtube com embed hr4BbdUiTUM
  • 如何在 PHP 中使用 Postgresql 白名单和准备语句?

    我知道我需要在我的 php 代码中实现白名单和准备好的语句 但我不确定如何使用 Postgresql 执行此操作 这对我的代码来说真的有必要吗 我使用选择列表将用户选择的值传递给查询
  • UTF-8 和 ISO 8859-9

    在过去的几天里 我一直在阅读有关 UTF 8 和 unicode 的内容 当我以为我已经了解了这一切时 当我读到 UTF 8 和 ISO 8859 9 不兼容时 我感到很困惑 我有一个以 UTF 8 格式存储数据的数据库 客户要求我支持各种