浅谈文字编码和Unicode(上) [转]

出处:http://blog.csdn.net/fmddlmyy/archive/2007/02/14/1510189.aspx

我曾经写过一篇《谈谈Unicode编码,简要解释UCS、UTF、BMP、BOM等名词》(以下简称《谈谈Unicode编码》),在网上流传较广,我也收到不少朋友的反馈。本文探讨《谈谈Unicode编码》中未介绍或介绍较少的代码页、Surrogates等问题,补充一些Unicode资料,顺带介绍一下我最近编写的一个Unicode工具:UniToy。本文虽然是前文的补充,但在写作上尽量做到独立成篇。

标题中的“浅谈”是对自己的要求,我希望文字能尽量浅显易懂。但本文还是假设读者知道字节、16进制,了解《谈谈Unicode编码》中介绍过的字节序和Unicode的基本概念。

0 UniToy  UniToy是我编写的一个小工具。通过UniToy,我们可以全方位、多角度地查看Unicode,了解Unicode和语言、代码页的关系,完成一些文字编码的相关工作。本文的一些内容是通过UniToy演示的。大家可以从我的网站(www.fmddlmyy.cn)下载UniToy的演示版本。 1 文字的显示1.1 发生了什么?

继续阅读浅谈文字编码和Unicode(上) [转]

谈谈Unicode编码,简要解释UCS、UTF、BMP、BOM等名词 [转]

出处:http://www.fmddlmyy.cn/text6.html

这是一篇程序员写给程序员的趣味读物。所谓趣味是指可以比较轻松地了解一些原来不清楚的概念,增进知识,类似于打RPG游戏的升级。整理这篇文章的动机是两个问题:

问题一:
使用Windows记事本的“另存为”,可以在GBK、Unicode、Unicode big endian和UTF-8这几种编码方式间相互转换。同样是txt文件,Windows是怎样识别编码方式的呢?

我很早前就发现Unicode、Unicode big endian和UTF-8编码的txt文件的开头会多出几个字节,分别是FF、FE(Unicode),FE、FF(Unicode big endian),EF、BB、BF(UTF-8)。但这些标记是基于什么标准呢?

问题二:
最近在网上看到一个ConvertUTF.c,实现了UTF-32、UTF-16和UTF-8这三种编码方式的相互转换。对于Unicode(UCS2)、GBK、UTF-8这些编码方式,我原来就了解。但这个程序让我有些糊涂,想不起来UTF-16和UCS2有什么关系。

查了查相关资料,总算将这些问题弄清楚了,顺带也了解了一些Unicode的细节。写成一篇文章,送给有过类似疑问的朋友。本文在写作时尽量做到通俗易懂,但要求读者知道什么是字节,什么是十六进制。

继续阅读谈谈Unicode编码,简要解释UCS、UTF、BMP、BOM等名词 [转]

OllyICE 快捷键

无论当前的OllyDbg窗口是什么,这些快捷键均有效:

■ Ctrl+F2 – 重启程序,即重新启动被调试程序。如果当前没有调试的程序,OllyDbg会运行历史列表[history list]中的第一个程序。程序重启后,将会删除所有内存断点和硬件断点。

■ 译者注:从实际使用效果看,硬件断点在程序重启后并没有移除。

■ Alt+F2 – 关闭,即关闭被调试程序。如果程序仍在运行,会弹出一个提示信息,询问您是否要关闭程序。

■ F3 – 弹出“打开32位.EXE文件”对话框[Open 32-bit .EXE file],您可以选择可执行文件,并可以输入运行参数。

■ Alt+F5 – 让OllyDbg总在最前面。如果被调试程序在某个断点处发生中断,而这时调试程序弹出一个总在最前面的窗口(一般为模式消息或模式对话框[modal message or dialog]),它可能会遮住OllyDbg的一部分,但是我们又不能移动最小化这个窗口。激活OllyDbg(比如按任务栏上的标签)并按Alt+F5,OllyDbg将设置成总在最前面,会反过来遮住刚才那个窗口。如果您再按一下Alt+F5,OllyDbg会恢复到正常状态。OllyDbg是否处于总在最前面状态,将会保存,在下一次调试时依然有效。当前是否处于总在最前面状态,会显示在状态栏中。

继续阅读OllyICE 快捷键

Visual Studio 2017

Microsoft Visual Studio Enterprise 2017 企业版
KEY:NJVYC-BMHX2-G77MM-4XJMR-6Q8QF
Microsoft Visual Studio Professional 2017 专业版
KEY:KBJFW-NXHK6-W4WJM-CRMQB-G3CDH

彻底移除 Windows 10 的 OneDrive

来源:http://bbs.pcbeta.com/viewthread-1740194-1-3.html

1、移除资源管理器导航栏的 OneDrive

将下列内容存为RemoveOneDrive.reg文件,并双击导入注册表

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\CLSID\{018D5C66-4533-4307-9B53-224DE2ED1FE6}]
"System.IsPinnedToNameSpaceTree"=dword:00000000

2、完美卸载

按WIN+R,输入【cmd】,点“确定”,运行以下三个命令:

taskkill /f /im OneDrive.exe
%SystemRoot%\System32\OneDriveSetup.exe /uninstall   
%SystemRoot%\SysWOW64\OneDriveSetup.exe /uninstall

如何彻底删除或卸载OneDrive
清理OneDrive残留数据。运行删除残余数据命令:

rd "%UserProfile%\OneDrive" /Q /S
rd "%LocalAppData%\Microsoft\OneDrive" /Q /S
rd "%ProgramData%\Microsoft OneDrive" /Q /S
rd "C:\OneDriveTemp" /Q /S

再运行注册表项删除命令:

REG Delete "HKEY_CLASSES_ROOT\CLSID\{018D5C66-4533-4307-9B53-224DE2ED1FE6}" /f
REG Delete "HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{018D5C66-4533-4307-9B53-224DE2ED1FE6}" /f

 

如何给程序添加自定义皮肤

来源:https://documentation.devexpress.com/#SkinEditor/CustomDocument2546
1、在VS里,通过Devexpress>Winform Controls v…>Run Skin Editor启动皮肤编辑器

2、新建皮肤项目

3、选择基础皮肤,记住新皮肤名称(skin name)

4、选择要修改的控件,双击黄框部分进行图像编辑。
注:请在Tools>Options…菜单下,指定图像编辑器程序

5、图像编辑完成后,单击【Load Image】等进行图像替换

6、保存工程后,通过菜单File>Create Assembly生成dll。默认在文档\My DXSkins文件夹下

7、随后弹出如下窗口。将这些内容对应地复制到解决方案的 Program.cs/Program.vb 文件的方法里。

8、打开【解决方案资源管理器】,添加引用
注:添加完成后,需要保存解决方案,重启VS。

9、打开【Program.vb】文件,添加如下内容。

注:参考步骤7内容

Imports System
Imports System.Configuration
Imports System.Windows.Forms
Imports DevExpress.Persistent.Base
Imports DevExpress.ExpressApp
Imports DevExpress.ExpressApp.Security
Imports DevExpress.ExpressApp.Win
Imports DevExpress.Persistent.BaseImpl
Imports 乐智ERP.Win
Imports DevExpress.Skins
Imports System.ComponentModel
Imports DevExpress.LookAndFeel

Public Class Program

    <STAThread()>
    Public Shared Sub Main(ByVal arguments() As String)


        '开始
        Dim asm As System.Reflection.Assembly = GetType(DevExpress.UserSkins.ilezhiskin).Assembly
        DevExpress.Skins.SkinManager.Default.RegisterAssembly(asm)
        SkinManager.EnableFormSkins()
        '结束


#If EASYTEST Then
              DevExpress.ExpressApp.Win.EasyTest.EasyTestRemotingRegistration.Register()
#End If

        Application.EnableVisualStyles()
        Application.SetCompatibleTextRenderingDefault(False)
        EditModelPermission.AlwaysGranted = System.Diagnostics.Debugger.IsAttached
        If Tracing.GetFileLocationFromSettings() = DevExpress.Persistent.Base.FileLocation.CurrentUserApplicationDataFolder Then
            Tracing.LocalUserAppDataPath = Application.LocalUserAppDataPath
        End If
        Tracing.Initialize()
        Dim _application As 乐智ERPWindowsFormsApplication = New 乐智ERPWindowsFormsApplication()
        ' Refer to the https://documentation.devexpress.com/eXpressAppFramework/CustomDocument112680.aspx help article for more details on how to provide a custom splash form.
        '_application.SplashScreen = New DevExpress.ExpressApp.Win.Utils.DXSplashScreen("YourSplashImage.png")
        SecurityAdapterHelper.Enable()
        If (Not ConfigurationManager.ConnectionStrings.Item("ConnectionString") Is Nothing) Then
            _application.ConnectionString = ConfigurationManager.ConnectionStrings.Item("ConnectionString").ConnectionString
        End If
#If EASYTEST Then
        If (Not ConfigurationManager.ConnectionStrings.Item("EasyTestConnectionString") Is Nothing) Then
            _application.ConnectionString = ConfigurationManager.ConnectionStrings.Item("EasyTestConnectionString").ConnectionString
        End If
#End If
        If System.Diagnostics.Debugger.IsAttached Then
            _application.DatabaseUpdateMode = DatabaseUpdateMode.UpdateDatabaseAlways
        End If
        Try
            '开始
            UserLookAndFeel.Default.SkinName = "ilezhi"
            ‘结束
            _application.Setup()
            _application.Start()
        Catch e As Exception
            _application.HandleException(e)
        End Try
    End Sub
End Class

’开始
Public Class SkinRegistration
    Inherits Component

    Public Sub New()
        DevExpress.Skins.SkinManager.Default.RegisterAssembly(GetType(DevExpress.UserSkins.ilezhiskin).Assembly)
    End Sub
End Class
‘结束

 

======================= 有用的皮肤数据=======================

Common > TextBorder,文本边框

 

addhanderl与handels区别

遇到一个问题。addhandler 与 handels的区别是什么

举例:如下语句运行成功

 Private Sub 供货商IDSearchLookUpEdit_TextChanged(sender As Object, e As EventArgs) Handles 供货商IDSearchLookUpEdit.TextChanged
        MsgBox(sender.name, MsgBoxStyle.OkCancel, "测试")
End Sub

如下语句不成功

Private Sub 主界面_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    AddHandler 供货商IDSearchLookUpEdit.TextChanged, AddressOf 供货商IDSearchLookUpEdit_TextChanged
end sub

Private Sub 供货商IDSearchLookUpEdit_TextChanged(sender As Object, e As EventArgs)
        'Handles 供货商IDSearchLookUpEdit.TextChanged
        MsgBox(sender.name, MsgBoxStyle.OkCancel, "测试")
End Sub

 

如何修改 cell 值

Private Sub GridView1_CellValueChanged(sender As Object, e As DevExpress.XtraGrid.Views.Base.CellValueChangedEventArgs) Handles GridView1.CellValueChanged
        If e.Column.FieldName = "FieldName" Then
            GridView1.SetRowCellValue(e.RowHandle, "columnName", "value")
        End If
End Sub

注:千万必要写成以下形式,否则会引发System.StackOverflowException 异常

Private Sub GridView1_CellValueChanged(sender As Object, e As DevExpress.XtraGrid.Views.Base.CellValueChangedEventArgs) Handles GridView1.CellValueChanged
        If GridView1.FocusedColumn.FieldName = "FieldName" Then
            GridView1.SetRowCellValue(e.RowHandle, "columnName", "value")
        End If
End Sub

相关链接:https://www.devexpress.com/Support/Center/Question/Details/T352822