Articles of 字符编码

如何在scala中解码系统进程输出?

我需要在Windows上处理一些长时间运行的命令的文本输出。 为了尽早得到这个过程的结果,我使用了Scala Stream和ProcessBuilder类。 一切都运行完美,但我碰到一个字符编码问题 。 这是我的条纹源代码(powershell命令只是替代真正的可执行文件)。 import scala.sys.process._ object CP850TEST extends Application{ val cmd = Seq("powershell", "-command", "echo 1a; Start-Sleep -s 1; echo 2äüîß; Start-Sleep -s 1 ; echo 3end") val lines:Stream[String] = cmd.lines lines.foreach(println) } 输出schould看起来像: 1a 2äüîß 3end 但只显示: 1a 2 3end 为了解决Java中的这个问题,我将声明InputStream的字符集(Cp850),但是我在Scala中找不到任何解决scheme: public static void main(String[] args) throws IOException { ProcessBuilder pb […]

在Windows上的java println输出编码

这个问题来自我在这里问的一个问题。 有人build议,这可能是一个Java的问题,所以我张贴另一个问题。 什么决定了system.out.println命令的输出编码? 基本上,我从命令提示符执行python程序,该命令提示符产生一个运行java(stanford parser)的subprocess它以UTF-8编码我的input文档,以特定格式处理和打印我的input。 回到python程序,我无法用utf-8解码stdout的输出。 这适用于OSX,所以我怀疑它可能是一个控制台编码问题。 我已经尝试设置chcp 65001并更改字体types,但这些不起作用。

如何防止非Unicode应用程序在不同本地化的计算机上加载资源字符集时转换资源字符集?

我们有一个用Visual Studio编写的非Unicode的C ++应用程序,最初是为使用代码页1252字符集的机器编写的。 我们的应用程序在读取资源内容后,会对资源的内容执行许多后处理步骤,包括查找某些文件中的资源string。 现在,中国的人们开始使用这个应用程序,他们的机器使用PRC语言环境(它将非Unicode应用程序的默认代码页设置为936,这是一个多字节字符集)。 看来, CString::LoadString将执行一些转换。 这打破了进一步的处理,因为我们在其他文件中寻找的内容是不一样的。 CMenu::GetMenuString或CWnd::GetWindowText 。 严格地说,我们不能简单地在我们的文件中使用iconv ,因为LoadString , GetMenuString或GetWindowText将以这种方式运行: 在代码页1252中有效的一些字符在代码页936中是无效的( 例如 ,),并被问号 在代码页1252中有效的一些字符在代码页936( 例如 É)中是无效的,但是被replace字符replace(É=>é) 两个代码页中都存在一些字符,但不具有相同的表示forms,通常在CP936中有两个字节 一些字符(包括所有ASCII字符)在两个代码页中都匹配。 我想这三个加载资源内容的函数加载二进制内容,而不执行任何字符集转换。 我试图用LANGUAGE LANG_INVARIANT, SUBLANG_NEUTRAL修改.rc文件LANGUAGE LANG_INVARIANT, SUBLANG_NEUTRAL但是这并没有改变任何东西。 资源文件还包括#pragma code_page(1252) ; 这可以安全地删除? 这是什么编译? 谢谢您的回答。

换行从Linux到Windows的新行字符丢失

我用java编写了一个简单的客户机/服务器,使用java NIO Socketchannel传输文件。 当我将一个简单的文本文件从Linux传输到Windows时,线路返回全部消失。 我知道两个操作系统使用不同的字符编码,但是我想弄清楚在哪个过程中我会考虑到这一点。 当服务器发送文件时,它只是发送原始字节,由FileInputStream读入。 我的客户端从通道读取字节到一个ByteBuffer,然后我得到了字节数组。 socketChannel.read(this.readBuffer); 每当我从频道收到更多的信息时,我遍历字节数组,寻找EOF,如果找不到,我把它放到一个文件中: FileOutputStream fos = new FileOutputStream(filepath); fos.write(data); //data is my byte[] fos.close(); 我知道这可能有一个明显的解决scheme,但我不太熟悉所涉及的所有概念。

什么是Windows代码页?

我正试图获得对Windows代码页的含义的基本了解。 我有种感觉,它是一个给定的8位值和给定字符graphics的某种“抽象”之间的转换。 我做了以下的实验。 我用变音符创build了两个字母字母字符。 一个是使用ALT 129(使用代码页437)值和一个使用ALT 0252(使用代码页1252)值创build的。 当我检查文字时,两个字符的值都是252。 你用元音变音是否是通用的8位抽象? 是Unicode值吗? 除了键盘input,还有使用代码页的库例程或系统调用吗? 例如,是否有一个函数来使用给定的代码表(如上面的ALT 129值)翻译string?

ImageMagick转义字符?

有一个转义字符,我可以使用ImageMagick 转换命令标签指令中的一个版权符号? 我试图在右下angular标记一批具有信用/版权的图像。 该批处理由在Windows命令行窗口中运行的CMD脚本处理。 我的问题是版权符号变成注册商标符号! 我知道这是一个通过命令窗口的代码页问题,所以我希望ImageMagick可以处理\ Uxxxx或类似的,但没有喜悦。

从文本文件中删除未知的字符

我有大量的文件包含我正在尝试使用Python脚本处理的数据。 这些文件是一个未知的编码,如果我在记事本++中打开它们,它们包含由加载的“空白”字符(在记事本++中黑色背景上的白色表示为NULL)分隔的数字数据。 为了处理这个问题,我用空字符\ x00分隔文件,并使用以下脚本检索数值: stripped_data=[] for root,dirs,files in os.walk(PATH): for rawfile in files: (dirName, fileName)= os.path.split(rawfile) (fileBaseName, fileExtension)=os.path.splitext(fileName) h=open(os.path.join(root, rawfile),'r') line=h.read() for raw_value in line.split('\x00'): try: test=float(raw_value) stripped_data.append(raw_value.strip()) except ValueError: pass 但是,在文件中有时候还有其他无法识别的字符(就我所知,总是在最开始的时候),这些在Notepad ++中显示为“EOT”,“SUB”和“ETX”。 它们似乎干扰了Python中文件的处理过程 – 即使在Notepad ++中可以看到更多的数据,文件也会以这些字符结尾。 在处理之前,如何从这些文件中删除所有非ASCII字符?

哪些编码是我的源string?

当我有这样的C ++代码: std::string narrow( "This is a narrow source string" ); std::string n2( "Win-1252 (that's the encoding we use for source files): ä,ö,ü,ß,€, …" ); // What encoding should I pass to Win32's `MultiByteToWideChar` function // to convert these string to a propoer wchar_t (= UTF-16 on Windows)? 如果这是我们cpp文件的(隐式)编码,我能否总是假设Win-1252? Visual-C ++编译器如何决定哪个字符编码源文件? 如果开发人员使用“普通”文本文件默认为另一种单/多字节编码的机器,会发生什么? 我假设编码只是用于编译代码的机器上的一个问题? 也就是说,一旦构build了可执行文件,将静态string从固定的窄编码转换为Windows的UTF-16 wchar_t将始终产生相同的结果,而不pipe用户PC上的语言/语言环境如何。

使用python在cmd中打印UTF-8字符

# – * – 编码:utf-8 – * – 打印“ÆØÅ” 在Windows 7中使用cmd , powershell或cygwin在python 2.7.3上运行上面的脚本时,我得到这个输出: ├å├ÿ├à 该文件是一个UTF-8文件,在我的文本编辑器中工作正常。 我怎样才能打印“ÆØÅ”?

Delphi / windows和Linux / Lazarus共享#127上面的字符

我正在维护一个需要在Windows和Linux机器之间共享数据的项目。 该程序是在2003年在DELPHI(Windows)中开发的,因此将来有很多遗留数据文件必须(至less可能)被这两个系统读取。 我已经将程序移植到了Lazarus,并且它在Linux上运行得非常好。 但是数据(专有格式)已经将string存储为#0-#255中的一般ASCII字符。 在Linux机器上读取数据会导致很多'?' – 符号而不是'ñ,äöß'等。 我试图解决的问题是: 1.)我像往常一样在Windows机器上读取数据。 2.)我用一个修改后的版本保存了数据,在保存时会用URLEncode()对所有string进行编码。 3.)我也修改了用URLDecode 4读取数据的例程。)我用修改后的版本保存了数据。 5.)我在linux上编译了modduied版本,并从windows机器上复制了数据。 6.)我打开了有问题的数据,并得到了问号(?),而不是“ñ,üöüß”等。 那么,真正的问题是:如何共享两个系统维护的数据,并在编辑数据时保留这些字符(双方)? 提前致谢