Articles of UTF 8

正则expression式<STDIN>找不到匹配 – Perl

我正在尝试制作一个脚本,它将带有带有重音字符的string,并返回它们的不重复的对应字符。 在设法find一些帮助和教程之后,我设法做出了几乎可行的东西,但是我遇到了一个问题。 我的代码做我想要的,只要我想要它在一个简单的string上完成,但是当我想要使用<STDIN>时它什么都不做。 我的代码: use strict; use warnings; my %replace = ( 'é' => "e", 'á' => "a", 'ő' => "o", 'ö' => "o", 'ó' => "o", 'ú' => "u", 'ü' => "u", 'ű' => "u", 'í' => "i", ); my $regex = join "|", keys %replace; $regex = qr/$regex/; my $s = <STDIN>; $s […]

将Subversion提交消息转换为Unicode

目前我有一个本地的Subversion版本库,其中有很多cp1251编码的提交信息。 有什么办法可以将所有的提交信息转换为utf-8编码吗?

如何将国际字符发送到Windows控制台?

码: #include <windows.h> int main() { SetConsoleOutputCP(CP_UTF8); system("echo Ιλιάδα"); } 在控制台上打印: Ιλιάδα源代码以UTF-8和BOM编码。 但是,如果我尝试: system(L"echo Ιλιάδα"); ,我得到错误: error: cannot convert 'const wchar_t*' to 'const char*' for argument '1' to 'int system(const char*)' 。 当然,我没有想到这里有任何其他的东西。 有没有其他的function可以接受这些字符?

运行保存在UTF-8中的scala脚本获取错误

我是scala的新手,我在“Scala编程”一书中尝试了一些小程序,当scala脚本保存在ANSI中时,效果很好。 但是当我把它保存在UTF-8中时,出现了一个错误:“error:illegal character?import”。 我在Windows上运行这个小例子程序。 而示例程序就像 import scala.io.Source if(args.isEmpty){ }else{ Source.fromFile(args(0)).getLines.toList.zipWithIndex.foreach { case (line, i) => println(i + " "+line)} } 那里发生了什么?

如何在所有平台上用C ++程序显示重音字符?

我试图从Windows移植到C ++ 11程序到Linux(GCC-4.9)。 本来,我只是设置程序内的区域设置 setlocale(LC_ALL,“”); 但是,它在Linux(最新版本的Linux Mint)上显示缺less的字符。 然后我开始将所有的源文件保存为UTF-8格式,这些文件解决了linux下的问题,但是现在所有的字符都在Windows中混淆了。 如果有帮助,语言是法语。 有没有什么方法可以在两个平台下正确显示文本,而不会有太多的麻烦? 我会很感激帮助,谢谢。 void EcranBienvenue() { char coinHG = (char)201; char coinHD = (char)187; char coinBG = (char)200; char coinBD = (char)188; char ligneH = (char)205; char ligneV = (char)186; #ifdef _WIN32 system("cls"); #elif defined __linux__ system("clear"); #else cout << string(20,'\n'); #endif setlocale(LC_ALL, "C"); cout << coinHG; […]

如何检测UTF8文本的等效Windows代码页

我有一个在Windows XP上运行的打印/邮件系统,它不支持在邮件列表中使用UTF8。 我想将邮件列表的代码页转换为适当的Windows本地等价物。 但从我的理解来看,这并不是一种规模,取决于语言环境,代码页会有所不同,例如匈牙利,希腊,瑞典,德国,俄罗斯等,更不用说中国传统等等。 有没有一种方法可以检测到一个logging不应该有一个以上的代码页需要什么适当的Windows代码页?

如何处理sqlite2中的UTF-8字符到sqlite3的迁移

尝试简单的方法: sqlite2 mydb.db .dump | sqlite3 mydb-new.db 我得到这个错误: 第84802行附近的SQL错误:没有这样的列:Ð 在这一行中,脚本是这样的: INSERT INTO vehiculo VALUES(127548,'21K0065217',','PA007808',65217,279,1989,3,468,'1998-07-30 00:00:00.000000','14/697 / 98-07',2, '',1); 我的猜测是, 没有引号的“Ñ”是问题 。 任何想法? PD:我现在在Windows下,我想使用命令行,所以它可以被自动化(这个过程将由服务器每天完成)。

如何将Windows-1251转码为UTF-8?

如何将Windows-1251转码为UTF-8? 这样的function会做到吗? function win_to_utf($s) { for($i=0, $m=strlen($s); $i<$m; $i++) { $c=ord($s[$i]); if ($c<=127) {$t.=chr($c); continue; } if ($c>=192 && $c<=207) {$t.=chr(208).chr($c-48); continue; } if ($c>=208 && $c<=239) {$t.=chr(208).chr($c-48); continue; } if ($c>=240 && $c<=255) {$t.=chr(209).chr($c-112); continue; } if ($c==184) { $t.=chr(209).chr(209); continue; }; if ($c==168) { $t.=chr(208).chr(129); continue; }; } return $t; }

OpenFileDialog文件名为UTF8

C#的问题在这里.. 我有一个UTF-8string被C ++中的一个非Unicode程序解释..这个文本显示不正确,但据我所知,是完整的,然后作为输出文件名应用。 无论如何,在C#项目中,我试图用System.Windows.Forms.OpenFileDialog对象打开这个文件。 我从这个对象的.FileNames []得到的文件名是Unicode(UCS-2)。 例如,如果原始string是0xe3 0x81 0x82 ,FileName []。ToCharArray()显示它现在是0x00e3 0x0081 0x201a ….它可能看起来像OpenFileDialog对象只填充它,但它不是。在OpenFileDialog产生的第三个字符,它是不同的,我不知道这个字节发生了什么.. 我的问题是:有没有办法将在OpenFileDialog框中突出显示的文件名作为UTF-8? 我不认为这是相关的,但如果你需要知道,string是在日本.. 谢谢, 克雷布斯 UPDATE 首先,感谢大家在这里提出的build议,非常感谢。 现在,要回答修改C ++应用程序以正确处理string的build议,似乎并不可行。 这不仅仅是一个应用程序正在这样做的string..我的公司,实际上有很多这些应用程序,我需要与工作,这将需要大量的人力和时间,根本不是可用。 不过,如果我select这条路线,sean的想法可能是最好的select。 @Remy Lebeau:我认为这是正确的,我会尝试你提出的解决scheme,并报告回来.. :)我想你的解决scheme的警告是, 默认编码必须在C#应用程序环境相同创build该文件的C ++应用程序环境,这当然是有道理的,因为它将不得不使用相同的代码页。 @Jeff约翰逊:我不是从C ++应用程序粘贴到C#应用程序的文件名..我打电话给OpenFileDialog.ShowDialog()并得到DialogResult.OK的OpenFileDialog.FileNames ..我也尝试使用Encoding.UTF8。 GetBytes(),但像Remy Lebeau指出的,它不会工作,因为原来的UTF8字节丢失.. @所有其他人:感谢您的想法.. 🙂 克雷布斯 UPDATE @Remy Lebeau:你的想法完美无缺! 只要C ++应用程序的环境与C#应用程序的环境相同(非Unicode程序的相同语言环境),我就可以检索到正确的文本.. 🙂 现在我有更多的问题..哈哈..有什么办法来确定一个string的编码? 该代码现在适用于UTF8string被错误地解释为ANSIstring,但拧起UCS-2string。 我需要能够确定编码和相应的处理。 GetEncoding()似乎没有用.. = /既不StreamReader的CurrentEncoding属性(总是说UTF-8).. PS我应该在新post中打开这个新问题吗?

如何轻松检测string中的utf8编码?

我有从其他程序的数据填充的string,这个数据可以用UTF8编码或不。 所以,如果不是我可以编码为UTF8,但什么是最好的方式来检测C ++中的UTF8? 我看到这个变种https://stackoverflow.com/questions / …但有评论说,这种解决scheme不100%检测。 所以,如果我编码到UTF8string已经包含UTF8数据,然后我写错误的文本到数据库。 那么我可以使用这个UTF8检测: bool is_utf8(const char * string) { if(!string) return 0; const unsigned char * bytes = (const unsigned char *)string; while(*bytes) { if( (// ASCII // use bytes[0] <= 0x7F to allow ASCII control characters bytes[0] == 0x09 || bytes[0] == 0x0A || bytes[0] == 0x0D || (0x20 […]