从MySQL检索到的UTF-8数据显示到基于Linux的C ++应用程序中,我遇到了很大的麻烦。 UTF文本显示为问号。 该应用程序使用MySQL C API。 所以我在mysql_init()和mysql_real_connect()之前传递了UTF-8选项: mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, 'utf8'); 和 mysql_options(&mysql,MYSQL_INIT_COMMAND, 'SET NAMES utf8'); 但是没有运气。 testing仍然显示为问号。 我用Perl脚本做了一些testing(我更熟悉它))。 如果我为连接指定了UTF-8选项,文本将正确显示: $dbh->{'mysql_enable_utf8'} = 1; $dbh->do('SET NAMES utf8'); 任何想法如何在C ++应用程序中正确显示UTF-8数据?
如何将ANSI编码文件转换为UTF-8编码文件与PHP,或任何脚本,或任何命令行下的Linux?
我的操作系统是Debian,我的默认语言环境是UTF-8,我的编译器是gcc。 默认情况下,limits.h中的CHAR_BIT是8,这对于ASCII来说是正确的,因为ASCII 1中的char = 8位。 但是由于我使用的是UTF-8,所以字符可以高达32位,这与CHAR_BIT默认值8相反。 如果我在limits.h中将CHAR_BIT修改为32来更好地适应UTF-8,那么为了使这个新值生效,我需要做些什么? 我想我必须重新编译gcc? 我必须重新编译linux内核吗? 那么默认安装的Debian软件包呢,它们能工作吗?
我在SUSE Linux Enterprise Desktop 11(x86_64)上工作,我在terminal中使用Vim作为我的编辑器。 我最近从https://github.com/itchyny/lightline.vim安装了一个名为lightline的插件。 插件使用特殊字符使状态行如下所示: 该栏的>部分实际上是►字符颜色像旁边的正方形。 问题是,在我的情况下,酒吧,看起来像这样: 虽然编码设置为UTF-8,并且所有必需的字体都安装在系统上(电力线的字体),但►字符显示不正确。 在这种情况下,terminal上设置的字体是电力线的Liberation Mono。 我的vimrc中的Lightline设置: set encoding=utf-8 scriptencoding utf-8 let g:lightline = { \ 'colorscheme': 'wombat', \ 'separator': {'left': "\u25B6", 'right': ''}, \ 'subseparator': { 'left': '', 'right': ''} \ } 我也试着复制►这样的字符 let g:lightline = { \ 'colorscheme': 'wombat', \ 'separator': {'left': "►", 'right': ''}, \ 'subseparator': […]
我已经读过这个: 在Python中pipe理标准输出时设置正确的编码 我试图坚持经验法则:“ 在内部始终使用Unicode,解码您收到的内容,并对您发送的内容进行编码。 ” 所以这是我的主要文件: # coding: utf-8 import os import sys from myplugin import MyPlugin if __name__ == '__main__': c = MyPlugin() a = unicode(open('myfile.txt').read().decode('utf8')) print(c.generate(a).encode('utf8')) 令我紧张的是: 我读了一个utf8文件,所以我解码。 然后我强制转换为unicode,它给unicode(open('myfile.txt').read().decode('utf8')) 然后我尝试输出到terminal 在我的Linuxshell,我需要重新编码为UTF8, 我想这是正常的,因为我一直工作在一个Unicodestring,然后输出它,我必须重新编码在UTF8(纠正我如果我在这里错了) 当我在Windows下使用Pycharm运行它时,它是两次utf8编码,这给了我像agréable, déjà 。 所以如果我删除encode('utf8') (它改变最后一行print(c.generate(a))那么它适用于Pycharm,但不再适用于Linux,我得到: 'ascii' codec can't encode character u'\xe9' in position blabla 'ascii' codec can't encode character u'\xe9' in […]
我正在使用twitter API工作我自己的tweetdeck版本。 一切正在工作:),如果从twitter直接拉结果,我得到在OSX Safari浏览器中看到那些漂亮的iPhone UTF8MB4笑脸。 我甚至有MySQL服务器来支持UTF8MB4。 唉,它只能在OSX Safari中运行,在OSX中的Chrome不起作用,windows中什么都不能。 相反,我得到白色的盒子。 这里有几个,我想知道他们是怎么看待你的! 🎃🎃💿📱 无论如何,我的问题是,是否有可能编写一个基于JavaScript的插件铬检测UTF8MB4字符,并将其replace为图像图标? 即使一个字符没有被find并且问题框被显示,chromes引擎识别字符离散地? 我真的不知道Chrome或Windows如何处理UTF8MB4。 Linux似乎喜欢它,但我总是通过OSX SSH会话访问它,所以也许就是这样。 感谢他的帮助。
我有一个巨大的XML文件,其示例数据如下: <vendor name="aglaia"><br> <vendorOUI oui="000B91" description="Aglaia Gesellschaft für Bildverarbeitung ud Kommunikation m" /><br> </vendor><br> <vendor name="ag"><br> <vendorOUI oui="0024A9" description="Ag Leader Technology" /><br> </vendor><br> 因为它可以看到有文本“GesellschaftfürBildverarbeitung”这是不是UTF-8兼容,因为我从XMLvalidation错误,错误如: 导入失败: com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException:1字节UTF-8序列的无效字节1。 那么查询是如何在Linux环境下处理这个xml文件到符合UTF-8的格式? 或者有没有在bash中的方式,以便在创buildXML的第一个地方,我可以确保所有的variables/string存储在UTF-8兼容格式?
我有一个string,包含UTF-8的普通话和英文单词: char *str = "你a好测b试"; 如果使用strlen(str) ,将返回14,因为每个普通话字符使用三个字节,而每个英文字符只使用一个字节。 现在我想复制最左边的4个字符( "你a好测" ),并在最后加上"…" ,给出"你a好测…" 。 如果文本是单字节编码,我可以写: strncpy(buf, str, 4); strcat(buf, "…"); 但UTF-8中的4个字符不一定是4个字节。 对于这个例子,它将是13个字节: 你 , 好和测三个,一个为a 。 所以,对于这个特定的情况,我需要 strncpy(buf, str, 13); strcat(buf, "…"); 如果长度错误,我可能会产生一个不完整的UTF-8stream。 显然我想避免这一点。 我怎样才能计算正确的字节数复制,对应于给定数量的字符?
我试图使用iconv(3)使用下面的代码将宽字符的string转换为UTF-8。 当我运行下面的代码时,iconv调用返回E2BIG,就好像输出缓冲区中没有足够的可用空间字节。 这发生尽pipe(我认为),我已经调整了输出缓冲区大小承认UTF-8的最坏情况下扩展。 事实上,假设input是一个简单的ASCII'A',编码为wchar_t,后跟一个零wchar_t终止符,输出应该恰好是两个字节/字符:一个'A'后跟一个'\ 0'。 我的Linux系统上的'man utf-8'表示UTF-8字节序列的最大长度是6个字节,所以我认为对于2个wchar_ts(一个字符后接空终止符)的input缓冲区,我的系统)总共8字节(因为sizeof(wchar_t)== 4),一个12字节的缓冲区(2 * UTF8_SEQUENCE_MAXLEN)应该就足够了。 通过实验,如果我将UTF8_SEQUENCE_MAXLEN增加到16,iconv的返回值表示成功(15仍然失败)。 但我看不出任何wchar_t值在以UTF-8编码时会占据如此多的字节。 我的计算出错了吗? 16字节的UTF-8序列是可能的吗? 我做错了什么? #include <stdio.h> #include <stdlib.h> #include <iconv.h> #include <wchar.h> #define UTF8_SEQUENCE_MAXLEN 6 /* #define UTF8_SEQUENCE_MAXLEN 16 */ int main(int argc, char **argv) { wchar_t *wcs = L"A"; signed char utf8[(1 /* wcslen(wcs) */ + 1 /* L'\0' */) * UTF8_SEQUENCE_MAXLEN]; char […]
我听说fopen支持UTF8,但我不知道如何将短裤arrays转换为utf8 我如何使用unicode字母创build一个文件? 我更喜欢只使用内置的库(没有提升,这是没有安装在Linux的盒子)。 我确实需要使用fopen,但是它非常简单。