天道酬勤,学无止境

character-encoding

如何检查包含 HTML 字符的条目的数组?(How do I check an array for an entry that contains HTML characters?)

问题 我有一个表示希腊字母的数组,表示为 HTML 字符串: $alphabet = ["α", "β", "γ", "δ", ...] 类似的字符串变量存储在 MySQL 数据库中并从中检索(我使用的是mysqli )。 当我检索一个变量$db_result其值是,说, "α" 从数据库并使用in_array()函数检查它是否在$alphabet数组中,但是,它从未找到: if( in_array($db_result, $alphabet) ){ print_r("That's Greek to me!"); } /* Result: Nothing ever prints */ 如果我print_r() $db_result和$alphabet ,它们都打印相同的字符。 也就是说, $db_result打印为 'α' 而$alphabet打印为Array ( [0] => α [1] => β [2] => γ ...) 。 在页面源代码中, $db_resul值显示为实际的希腊字母,而$alphabet数组条目是 HTML α . 我不关心显示的逻辑:我需要in_array()将 alpha 识别为 alpha 一旦值为"α" ,编码就必须有所不同是从数据库中检索到的,但我不知道如何修复它或如何修复它。 回答1 数据库结果是实际字符,所以将其转换为HTML实体进行检查:

2021-10-24 04:36:28    分类:技术分享    php   mysqli   character-encoding

Encoding/decoding non-ASCII character when using Python Pandas

I have some data with non-ASCII characters. I attempted to take care of it using the following: # coding=utf-8 import pandas as pd from pandas import DataFrame, Series import sys import re reload(sys) sys.setdefaultencoding('latin1') Though I have identified some records still giving me encoding/decoding problem. I have copied and pasted one of the problematic record (containing the name and location columns of the record) as below: 'Eugène Badeau' 'E, Québec (county/comté), Quebec, Canada' Using the .decode('utf-8') adding to the exact text extraction it resolved the problem. print 'EugÃ

2021-10-24 03:29:48    分类:问答    python-2.7   pandas   character-encoding   ascii   non-ascii-characters

节点缓冲区别名 - 二进制是 latin1?(Node Buffer Alias - binary is latin1?)

问题 根据这个页面: 'binary' - 'latin1' 的别名。 但是,由于缺少某些代码点,因此无法在 latin1 中表示二进制。 因此,像我这样想要将 NodeJS 缓冲区用于二进制数据(一个非常常见的用例)的开发人员希望使用“二进制”作为编码。 似乎没有任何文档可以正确解释如何处理二进制数据! 我试图理解这一点。 所以我的问题是:为什么选择 latin1 作为二进制的别名? 人们已经提到使用 null 作为编码将适用于二进制数据。 那么一个后续问题:为什么 null 和 'binary' 不做同样的事情? 回答1 Node 文档对 'latin1' 的定义,在问题中引用的 'binary' 定义上方的那一行,不是 ISO 8859-1。 这是: 'latin1' - 一种将 Buffer 编码为单字节编码字符串的方法(如 IANA 在 RFC1345,第 63 页中定义的那样,作为 Latin-1 补充块和 C0/C1 控制代码)。 RFC 1345 中指定的“latin1”字符集定义了所有 256 个代码点的映射。 它没有 ISO 8859-1 映射中 0x00-0x1f 和 0x7f-0x9f 处存在的空洞。 为什么 null 和 'binary' 不做同样的事情? 节点没有空编码。 如果您调用Buffer.from('foo', null

2021-10-24 02:51:26    分类:技术分享    node.js   character-encoding

使用python将unicode数据写入mssql?(write unicode data to mssql with python?)

问题 我正在尝试将包含希伯来语文本的 .csv 文件中的表格写入 sql server 数据库。 该表有效,pandas 读取数据正确(甚至在 pycharm 中正确显示希伯来语), 但是当我尝试将它写入数据库中的表时,我会在希伯来语应该在哪里出现问号( “???” )。 这是我尝试过的,使用 Pandas 和 sqlalchemy: import pandas as pd from sqlalchemy import create_engine engine = create_engine('mssql+pymssql://server/test?charset=utf8') connection = engine.connect() df = pd.read_csv("temp.csv", low_memory=False, encoding="UTF-8") table_name = "test" df.to_sql(table_name, connection, index=False, if_exists="append") 这正确加载了表格但未能写出希伯来语, 有什么建议? 回答1 您需要更改列的数据类型。 text已弃用,应使用varchar(MAX)代替,但是,两者都不能存储 unicode 字符。 要存储 unicode 字符,您需要使用ntext ,这也已弃用;

2021-10-24 02:34:30    分类:技术分享    python   sql-server   pandas   utf-8   character-encoding

Transcoding characters on-the-fly using iostreams and ICU

I'd like to transcode character encoding on-the-fly. I'd like to use iostreams and my own transcoding streambuf, e.g.: xcoder_streambuf xbuf( "UTF-8", "ISO-8859-1", cout.rdbuf() ); cout.rdbuf( &xbuf ); char *utf8_s; // pointer to buffer containing UTF-8 encoded characters // ... cout << utf8_s; // characters are written in ISO-8859-1 The implementation of xcoder_streambuf would use ICU's converters API. It would take the data coming in (in this case, from utf8_s), transcode it, and write it out using the iostream's original steambuf. Is that a reasonable way to go? If not, what would be better

2021-10-24 01:44:16    分类:问答    c++   unicode   character-encoding   iostream   icu

LibXML internal and output encodings

I'm trying to write XML files with libxml2 in ISO-8859-1. But from the documentation it seems that for each text node that I create I'll have to convert to UTF-8 which is libxml's internal encoding. Then when calling xmlSaveFormatFileEnc() libxml converts to the target encoding and adds the encoding attribute to the document. Is this assumption correct? For now my code goes roughly like this: xmlNode *root_element = NULL, *node4 = NULL; xmlDoc *doc = NULL; doc = xmlNewDoc(BAD_CAST XML_DEFAULT_VERSION); root_element = xmlNewDocNode(doc, NULL, BAD_CAST("root"), NULL); char * input_str =

2021-10-24 01:15:24    分类:问答    c   xml   character-encoding   libxml2

将文本转换为拉丁文编码并解码越南语的问题(Convert text to Latin encoding and decode back problem for Vietnamese)

问题 我正在尝试将越南语转换为拉丁语。 需要将字节发送到 ESC/P 打印机(有关原因,请参阅 C# ESC/POS 打印越南语)。 但是我的问题很简单,看这段代码: Encoding enc = Encoding.GetEncoding(1258); //vietnamese code page string content = "Cơm chiên với các loại gia vị truyền"; string newStr = Encoding.GetEncoding("Latin1").GetString(enc.GetBytes(content)); string origStr = enc.GetString(Encoding.GetEncoding("Latin1").GetBytes(newStr)); //origStr is becomes "Cơm chiên v?i các lo?i gia v? truy?n" 为什么origStr变成Cơm chiên v?i các lo?i gia v? truy?n Cơm chiên v?i các lo?i gia v? truy?n而不是包含与content相同的content ? 但是,它在中文或泰文中运行良好。 您可以测试下面的代码... 简体中文 Encoding enc = Encoding

2021-10-24 00:20:53    分类:技术分享    c#   encoding   character-encoding   codepages

UTF-16如何实现自同步?(How does UTF-16 achieve self-synchronization?)

问题 我知道 UTF-16 是一种自同步编码方案。 我也阅读了下面的 Wiki,但不太明白。 自同步代码 你能用 UTF-16 的例子解释一下吗? 回答1 在 UTF-16 中,BMP 之外的字符使用代理对表示,其中第一个代码单元 (CU) 位于 0xD800-0xDBFF 之间,第二个位于 0xDC00-0xDFFF 之间。 每个 CU 代表代码点的 10 位。 BMP 中的字符被编码为自身。 现在同步很容易。 给定任意代码单元的位置: 如果代码单元在 0xD800—0xDBFF 范围内,则是两个的第一个代码单元,只需读取下一个并解码。 瞧,我们在 BMP 之外有一个完整的角色如果代码单元在 0xDC00—0xDFFF 范围内,则是两个的第二个代码单元,只需返回一个单元读取第一部分,或前进到下一个单元跳过当前字符如果它不在这两个范围内,那么它就是 BMP 中的一个字符。 我们不需要再做任何事情 在 UTF-16 中 CU 是单位,即最小的元素。 我们在 CU 级别工作并逐个读取 CU,而不是逐字节读取。 由于这一点以及历史原因,UTF-16 只能在 CU 级别自同步。 自同步的要点是立即知道我们是否处于某事的中间,而不必从头开始再次阅读和检查。 UTF-16 允许我们这样做 由于高代理项、低代理项和有效 BMP 字符的范围不相交,代理不可能匹配 BMP 字符,或者两个相邻字符的

2021-10-23 17:50:09    分类:技术分享    unicode   character-encoding   utf-16   data-synchronization

在 jQuery Ajax Post 上强制“charset=x-user-defined”(Force "charset=x-user-defined'" on jQuery Ajax Post)

问题 我正在尝试从 Javascript 应用程序调用 Hessian Web 服务,但我在解析响应时遇到问题,因为 jQuery 将响应视为文本并删除它的第一个字节。 在我的研究中,我发现您需要将字符集设置为'charset=x-user-defined'以便浏览器保持我的字节不变。 但是,根据 ajax 文档: 向服务器发送数据默认情况下,Ajax 请求是使用 GET HTTP 方法发送的。 如果需要 POST 方法,可以通过为 type 选项设置一个值来指定该方法。 此选项影响数据选项的内容发送到服务器的方式。 根据 W3C XMLHTTPRequest 标准,POST 数据将始终使用 UTF-8 字符集传输到服务器。 事实上,无论我使用什么设置,字符集都不会改变。 我已经尝试了以下,分别和一次,没有运气 $.ajax({ type : 'POST', url : url, timeout : 3000, data : parameters, contentType : "x-application/hessian; charset=x-user-defined'", mimeType: 'text/plain; charset=x-user-defined', headers: { Accept : "text/plain; charset=x-user-defined"

2021-10-23 14:55:34    分类:技术分享    javascript   jquery   ajax   character-encoding   hessian

c# 从控制台读取希伯来语文本(c# reading Hebrew text from console)

问题 我正在使用 Windows 10(也许这就是问题所在:-)) 我有一个简单的代码,它从控制台读取希伯来语文本,然后打印它的 HEX\DEC 值 但是他总是在控制台窗口上给我 00 我可以看到希伯来字母 有什么理由吗? using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO.Ports; using System.Net; using System.Net.Sockets; using System.Timers; using System.IO; namespace HebTest { class Program { static public void Main(string[] args) { Console.WriteLine("Write your message here - "); string StringMessage = Console.ReadLine(); Console.WriteLine("print string - " + StringMessage); ///message in HEX byte [] ByteMessage =

2021-10-23 13:51:29    分类:技术分享    c#   character-encoding   hebrew