Articles of UTF 8

在C ++中处理UTF-8

要了解C ++是否是我的项目的正确语言,我想testingUTF-8的function。 根据参考资料,我build立了这个例子: #include <string> #include <iostream> using namespace std; int main() { wstring str; while(getline(wcin, str)) { wcout << str << endl; if(str.empty()) break; } return 0; } 但是当我input一个UTF-8字符时,它会出错: $ > ./utf8 Hello Hello für f $ > 不仅不打印ü ,而且还会立即退出。 gdb告诉我没有崩溃,但是一个正常的退出,但我觉得很难相信。

在Linux / POSIX中语言环境如何工作以及应用了哪些转换?

我正在处理大量的(我希望)UTF-8文本文件。 我可以使用Ubuntu 13.10(3.11.0-14-generic)和12.04来重现它。 在调查一个bug时,我遇到了奇怪的行为 $ export LC_ALL=en_US.UTF-8 $ sort part-r-00000 | uniq -d ɥ ɨ ɞ ɧ 251 ɨ ɡ ɞ ɭ ɯ 291 ɢ ɫ ɬ ɜ 301 ɪ ɳ 475 ʈ ʂ 565 $ export LC_ALL=C $ sort part-r-00000 | uniq -d $ # no duplicates found 运行使用std::stringstream读取文件的自定义C ++程序时,也会出现重复项 – 在使用en_US.UTF-8语言环境时,重复项会失败。 至less对于std::string和input / […]

iconv任何编码为UTF-8

我试图将iconv指向一个目录,所有文件将被转换为UTF-8,而不pipe当前编码如何 我正在使用这个脚本,但你必须指定你要从哪个编码。 我怎样才能使它自动检测当前的编码? dir_iconv.sh #!/bin/bash ICONVBIN='/usr/bin/iconv' # path to iconv binary if [ $# -lt 3 ] then echo "$0 dir from_charset to_charset" exit fi for f in $1/* do if test -f $f then echo -e "\nConverting $f" /bin/mv $f $f.old $ICONVBIN -f $2 -t $3 $f.old > $f else echo -e "\nSkipping $f […]

有没有办法从UTF8转换为ISO-8859-1?

我的软件得到了一些UTF8string比我需要转换为ISO 8859 1.我知道UTF8域大于iso 8859.但UTF8中的数据已经从ISO上转换,所以我不应该错过任何东西。 我想知道是否有一个简单的/直接的方式从UTF8转换为iso-8859-1。 谢谢

string使用的字符单元的数量

我有一个输出使用UTF-8string的文本表的程序,我需要测量string使用的等宽字符单元格的数量,以便我可以正确alignment它。 如果可能的话,我想用标准function来做到这一点。

如何在C ++中使用UTF-8编码的string写入Windows中的文件

我有一个string,可能或不可能有unicode字符,我试图写在Windows上的文件。 下面我已经发布了一些代码示例,我的问题是当我打开并读取窗口的值时,它们都被解释为UTF-16字符。 char* x = "Fool"; FILE* outFile = fopen( "Serialize.pef", "w+,ccs=UTF-8"); fwrite(x,strlen(x),1,outFile); fclose(outFile); char buffer[12]; buffer[11]=NULL; outFile = fopen( "Serialize.pef", "r,ccs=UTF-8"); fread(buffer,1,12,outFile); fclose(outFile); 这些字符也被解释为UTF-16,如果我在打字机等打开文件。我做错了什么?

java控制台输出的默认字符编码

Java如何确定用于System.out的编码? 鉴于以下课程: import java.io.File; import java.io.PrintWriter; public class Foo { public static void main(String[] args) throws Exception { String s = "xxäñxx"; System.out.println(s); PrintWriter out = new PrintWriter(new File("test.txt"), "UTF-8"); out.println(s); out.close(); } } 它被保存为UTF-8,并在Windows系统上使用javac -encoding UTF-8 Foo.java进行编译。 之后在git-bash控制台(使用UTF-8字符集)我做: $ java Foo xxõ±xx $ java -Dfile.encoding=UTF-8 Foo xx├ñ├▒xx $ cat test.txt xxäñxx $ java Foo […]

R,Windows和外语字符

R一直是一个长期存在的问题: 它可以在Unix上读取非拉丁字符,但是我无法在Windows上读取它们 。 多年来,我已经在几个英文版的Windows机器上复制了这个程序。 我试着改变Windows中的本地化设置和许多其他的无效。 有没有人真的能够读取Windows上的外文文件? 我认为能够读/写/显示unicode是一个程序非常漂亮的function。 环境: > Sys.getlocale() [1]“LC_COLLATE = English_United States.1252; LC_CTYPE = English_United States.1252; LC_MONETARY = English_United States.1252; LC_NUMERIC = C; LC_TIME = English_United States.1252” 问题可以复制如下: 在文本编辑器中用俄语或阿拉伯语等语言创build简单的文件,并将其保存为UTF-8,不带BOM。 > test_df <- read.table("test2.txt",header=FALSE, sep=";", quote="",fill=FALSE, encoding="UTF-8",comment.char="",dec=",") ……Warning message: ……In read.table("test2.txt", header = FALSE, sep = ";", quote = "", : ……incomplete final line […]

如何逐行阅读unicode(utf-8)/二进制文件

嗨程序员, 我想逐行读一个由记事本创build的Unicode(UTF-8)文本文件,我不想在屏幕上显示Unicodestring,我只想读取和比较string! 此代码逐行读取ANSI文件,并比较string 我想要的是 逐行阅读test_ansi.txt 如果该行=“b”打印“YES!” 否则打印“不! read_ansi_line_by_line.c #include <stdio.h> int main() { char *inname = "test_ansi.txt"; FILE *infile; char line_buffer[BUFSIZ]; /* BUFSIZ is defined if you include stdio.h */ char line_number; infile = fopen(inname, "r"); if (!infile) { printf("\nfile '%s' not found\n", inname); return 0; } printf("\n%s\n\n", inname); line_number = 0; while (fgets(line_buffer, sizeof(line_buffer), […]

如何在Perl中编写一个* filename *包含utf8字符的文件?

我正在努力创build一个包含非ASCII字符的文件。 如果以0作为参数调用下面的脚本,但使用1调用时会死亡。 错误消息已打开:C:\ temp \ filename.pl第15行中的参数无效。 该脚本在cmd.exe启动。 我期望它写一个文件的名字是(取决于参数) äöü.txt或äöü☺.txt 。 但我无法创build包含笑脸的文件名。 use warnings; use strict; use Encode 'encode'; # Text is stored in utf8 within *this* file. use utf8; my $with_smiley = $ARGV[0]; my $filename = 'äöü' . ($with_smiley ? '☺' : '' ). '.txt'; open (my $fh, '>', encode('cp1252', $filename)) or die "open: $!"; […]