标签: utf-16

UTF-16LE与UTF32-LE的Unicode BOM

看起来用于UTF16-LE和UTF-32LE的字节顺序标记之间存在歧义.特别是,考虑一个包含以下8个字节的文件:

FF FE 00 00 00 00 00 00
Run Code Online (Sandbox Code Playgroud)

如何判断此文件是否包含:

  1. UTF16-LE BOM(FF FE)后跟3个空字符; 要么
  2. UTF32-LE BOM(FF FE 00 00)后跟一个空字符?

Unicode BOMs在这里描述:http://unicode.org/faq/utf_bom.html#bom4但是没有讨论这种歧义.我错过了什么吗?

unicode byte-order-mark file-type utf-16 character-encoding

8
推荐指数
2
解决办法
2303
查看次数

Python UTF-16 CSV阅读器

我有一个UTF-16 CSV文件,我必须阅读.Python csv模块似乎不支持UTF-16.

我使用的是python 2.7.2.我需要解析的CSV文件是大量运行到几GB的数据.

John Machin的答案问题如下

print repr(open('test.csv', 'rb').read(100))
Run Code Online (Sandbox Code Playgroud)

输出test.csv只有abc作为内容

'\xff\xfea\x00b\x00c\x00'
Run Code Online (Sandbox Code Playgroud)

我认为csv文件是在美国的Windows机器上创建的.我正在使用Mac OSX Lion.

如果我使用phihag提供的代码和包含一条记录的test.csv.

示例test.csv使用的内容.下面是print repr(open('test.csv','rb').read(1000))输出

'\xff\xfe1\x00,\x002\x00,\x00G\x00,\x00S\x00,\x00H\x00 \x00f\x00\xfc\x00r\x00 \x00e\x00 \x00\x96\x00 \x00m\x00 \x00\x85\x00,\x00,\x00I\x00\r\x00\n\x00'
Run Code Online (Sandbox Code Playgroud)

代码由phihag

import codecs
import csv
with open('test.csv','rb') as f:
      sr = codecs.StreamRecoder(f,codecs.getencoder('utf-8'),codecs.getdecoder('utf-8'),codecs.getreader('utf-16'),codecs.getwriter('utf-16'))      
      for row in csv.reader(sr):
         print row
Run Code Online (Sandbox Code Playgroud)

输出上面的代码

['1', '2', 'G', 'S', 'H f\xc3\xbcr e \xc2\x96 m \xc2\x85']
['', '', 'I']
Run Code Online (Sandbox Code Playgroud)

预期产量是

['1', '2', 'G', 'S', 'H f\xc3\xbcr e \xc2\x96 m \xc2\x85','','I']
Run Code Online (Sandbox Code Playgroud)

python csv utf-16

8
推荐指数
1
解决办法
1万
查看次数

将std :: string编码/解码为UTF-16

我必须处理一种文件格式(包括读取和写入),其中字符串以UTF-16编码(每个字符2个字节).由于ASCII表中的字符很少在应用程序域中使用,因此我的C++模型类中的所有字符串都存储在std :: string(UTF-8编码)的实例中.

我正在寻找一个库(在STL和Boost中搜索没有运气)或一组C/C++函数来处理这个std :: string < - > UTF-16转换从加载或保存到文件格式时(实际建模)作为一个字节流)包括代理对的生成/识别和所有那些Unicode的东西(我承认不是专家)...

有什么建议?谢谢!

编辑:忘了提它应该跨平台(Win/Mac),不能使用C++ 11.

c++ utf-16 stdstring

8
推荐指数
1
解决办法
2万
查看次数

如何将表情符号与R正则表达式相匹配?

我想确定我的vector的哪些元素包含表情符号:

x = c('', 'no', '', '', 'no', '', '?', '??')
x
# [1] "\U0001f602" "no"         "\U0001f379" "\U0001f600" "no"         "\U0001f61b" "?"         "??"
Run Code Online (Sandbox Code Playgroud)

相关帖子只涵盖其他语言,因为大部分都是指专业图书馆,我无法想出一种翻译成R的方法:

第二个看起来很有希望,但唉(不是通过提供固定perl = TRUE):

x[grepl('[\u{1F600}-\u{1F6FF}]', x)]
Run Code Online (Sandbox Code Playgroud)

错误:无效\ u {xxxx}序列(第1行)

类似的问题来自其他问题.我们怎样才能匹配R中的表情符号?

regex r utf-16 emoji

8
推荐指数
1
解决办法
2153
查看次数

SonarQube - 无法使用UTF-16编码分析xml和xsd文件

我正在使用sonarqube(版本5.6.7)和声纳扫描仪(版本3.0.3.778)来分析一些文档.在这些文档中,还有.xml.xsd文件,其中包含了UTF-16.

当我sonar-scanner从命令行启动命令时,使用此配置

#----- Default SonarQube server
sonar.host.url=http://localhost:9000

#----- Default source code encoding
sonar.sourceEncoding=UTF-16

# must be unique in a given SonarQube instance
sonar.projectKey=my:project
# this is the name and version displayed in the SonarQube UI. Was mandatory prior to SonarQube 6.1.
sonar.projectName=My project 1
sonar.projectVersion=1.0

# Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows.
# This property is optional …
Run Code Online (Sandbox Code Playgroud)

xml xsd utf-16 sonarqube sonarqube-scan

8
推荐指数
0
解决办法
520
查看次数

读取Unicode文件C++

我有一个简单的问题要问.我有一个UTF 16文本文件,以FFFE开头.有哪些C++工具可以处理这种文件?我只是想读它,过滤一些行,并显示结果.

它看起来很简单,但我只是在使用简单的ascci文件时有经验,而且我很着急.我正在使用VS C++,但我不想使用托管C++.

问候

这里放一个非常简单的例子

wifstream file; 
file.open("C:\\appLog.txt", ios::in);

wchar_t buffer[2048]; 
file.seekg(2);
file.getline(buffer, bSize-1);

wprintf(L"%s\n", buffer);
file.close();
Run Code Online (Sandbox Code Playgroud)

c++ unicode file utf-16 visual-c++

7
推荐指数
1
解决办法
2万
查看次数

Tcl用于获取字符串中每个字符的ASCII码

我需要为字符串中的每个字符获取ASCII字符.实际上它是(小)文件中的每个字符.以下前3行成功将所有文件的内容拉入字符串(根据此配方):

set fp [open "store_order_create_ddl.sql" r]
set data [read $fp]
close $fp
Run Code Online (Sandbox Code Playgroud)

我相信我正确地辨别出字符的ASCII码(参见http://wiki.tcl.tk/1497).但是我在弄清楚如何遍历字符串中的每个字符时遇到了问题.

首先,我不认为以下是用Tcl循环字符串中的字符的特殊惯用方法.其次,更重要的是,它行为不正确,在每个字符之间插入一个额外的元素.

下面是我编写的代码,用于处理上面"数据"变量集的内容,然后是一些示例输出.

码:

for {set i 0} {$i < [string length $data]} {incr i} {
  set char [string index $data $i]
  scan $char %c ascii
  puts "char: $char (ascii: $ascii)"
}
Run Code Online (Sandbox Code Playgroud)

OUTPUT:

char: C (ascii: 67)
char:  (ascii: 0)
char: R (ascii: 82)
char:  (ascii: 0)
char: E (ascii: 69)
char:  (ascii: 0)
char: A (ascii: 65)
char:  (ascii: 0)
char: T (ascii: …
Run Code Online (Sandbox Code Playgroud)

string ascii list tcl utf-16

7
推荐指数
1
解决办法
2万
查看次数

当我不知道字节顺序时,如何在Perl中解码UTF-16数据?

如果我打开一个文件(并直接指定编码):

open(my $file,"<:encoding(UTF-16)","some.file") || die "error $!\n";
while(<$file>) {
    print "$_\n";
}
close($file);
Run Code Online (Sandbox Code Playgroud)

我可以很好地阅读文件内容.但是,如果我这样做:

use Encode;

open(my $file,"some.file") || die "error $!\n";
while(<$file>) {
    print decode("UTF-16",$_);
}
close($file);
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

UTF-16:Unrecognised BOM d at F:/Perl/lib/Encode.pm line 174
Run Code Online (Sandbox Code Playgroud)

我怎样才能使用它decode

编辑:这是前几个字节:

FF FE 3C 00 68 00 74 00
Run Code Online (Sandbox Code Playgroud)

perl decode utf-16

7
推荐指数
2
解决办法
1万
查看次数

如何将Rust字符串转换为UTF-16?

编者注:此代码示例来自1.0之前的Rust版本,并且不是有效的Rust 1.0代码,但是答案仍然包含有价值的信息。

我想将字符串文字传递给Windows API。许多Windows函数使用UTF-16作为字符串编码,而Rust的本机字符串是UTF-8。

我知道Rust有utf16_units()来生成UTF-16字符迭代器,但是我不知道如何使用该函数来生成UTF-16字符串(最后一个字符为零)。

我正在生成这样的UTF-16字符串,但我确信有更好的方法来生成它:

extern "system" {
    pub fn MessageBoxW(hWnd: int, lpText: *const u16, lpCaption: *const u16, uType: uint) -> int;
}

pub fn main() {
    let s1 = [
        'H' as u16, 'e' as u16, 'l' as u16, 'l' as u16, 'o' as u16, 0 as u16,
    ];
    unsafe {
        MessageBoxW(0, s1.as_ptr(), 0 as *const u16, 0);
    }
}
Run Code Online (Sandbox Code Playgroud)

string utf-16 rust

7
推荐指数
2
解决办法
4218
查看次数

表情符号到/来自 Javascript 中的代码点

在我创建的混合 Android/Cordova 游戏中,我让用户以表情符号 + 字母数字的形式提供标识符 - 即 0..9,A..Z,a..z - 名称。例如

??堆栈溢出

服务器端存储用户标识符时,Emoji 和 Name 部分分开存储,仅 Name 部分需要唯一。游戏不时显示“联赛表”,以便用户可以查看与其他玩家相比他们的表现如何。为此,服务器发回由表情符号、名称和分数组成的十个“高分”值的序列。

然后在一个包含三列的表格中向用户呈现 - 表情符号、名称和分数各一列。这就是我遇到一个小问题的地方。最初我很天真地认为我可以通过简单地查看handle.codePointAt(0). 当我意识到表情符号实际上可以是一个或多个 16 位 Unicode 值的序列时,我将代码更改如下

第 1 部分:剖析用户提供的“句柄”

var i,username,
    codepoints = [], 
    handle = "??StackOverflow",
    len = handle,length; 

 while ((i < len) && (255 < handle.codePointAt(i))) 
 {codepoints.push(handle.codePointAt(i));i += 2;}

 username = handle.substring(codepoints.length + 1);
Run Code Online (Sandbox Code Playgroud)

在这一点上,我有“解剖”句柄

 codepoints =  [128587, 8205, 65039];
 username = 'Stackoverflow;
Run Code Online (Sandbox Code Playgroud)

对上述i += 2和使用的解释说明handle.length这篇文章建议

  • handle.codePointAt(n) 将返回完整代理对的代码点,如果您点击领先代理。就我而言,由于表情符号必须是第一个字符,因此表情符号的 16 位 …

javascript utf-16 surrogate-pairs emoji

7
推荐指数
1
解决办法
819
查看次数