例如,®字符
我想在textbox输入框中显示,结果不行,显示?
想将这个字符写道txt文件中,也不行,怎么办?

解决方案 »

  1.   


    Private Sub Form_Load()
    Me.Text1.Text = "@"
    End Sub这样挺正常啊。
      

  2.   

    VB6确实不行,一些宽字符无法处理,建议换vb.net
      

  3.   

    好像用strconv方法可以解决,tiger_zhao好像知道
      

  4.   

    本帖最后由 bcrun 于 2011-10-31 08:13:57 编辑
      

  5.   

    用 Microsoft Forms 2.0 Object Library 空间中的 TextBox 控件能解决你的问题。
      

  6.   

    你可以看看我的这篇文章,里面有几个函数,可以了解到字符串处理的一些知识,另外再给你看看
    几个例子,应该可以帮你具体了解字符串处理方面的方法。
    以下例子虽然是C++写的,不过也大同小异://----------------------------------------------------------------------------------------------------
    // Function   Name:  LenB(W/A)
    // Return    Value:  (BOOL) - return string byte size.
    // Description    :  Account string byte size.
    //----------------------------------------------------------------------------------------------------
    // LenB unicode edition
    DWORD LenBW(LPWSTR lpExpression) //
    {
    DWORD i = 0;
    if(lpExpression==NULL)
    return 0;
    try{
    while(lpExpression[i]!=0)
    {
    i++;
    }
    i=i*2; }catch(...){
    i = 0;
    }
    return i;
    }// LenB ascii edition
    DWORD LenBA(LPSTR lpExpression) //
    {
    DWORD i = 0;
    if(lpExpression==NULL)
    return 0;
    try{
    while(lpExpression[i]!=0)
    {
    i++;
    }
    }catch(...){
    i = 0;
    }
    return i;
    }//----------------------------------------------------------------------------------------------------
    // Function   Name:  Len(W/A)
    // Return    Value:  (BOOL) - return string's word count.
    // Description    :  Account string's word count.
    //----------------------------------------------------------------------------------------------------
    // Len unicode edition
    DWORD LenW(LPWSTR lpExpression) //
    {
    DWORD i = 0;
    if(lpExpression==NULL)
    return 0;
    try{
    while(lpExpression[i]!=0)
    {
    i++;
    }
    }catch(...){
    i = 0;
    }
    return i;
    }
    // Len ascii edition
    DWORD LenA(LPSTR lpExpression) //
    {
    DWORD i = 0;
    DWORD WordCount = 0;
    if(lpExpression==NULL)
    return 0;
    try{
    while(lpExpression[i]!=0)
    {
    if((BYTE)lpExpression[i]>=0xA0){
    WordCount++;
    i++;
    if(lpExpression[i]==0){
    WordCount--;
    break;
    }
    }else
    WordCount++;
    i++;
    }
    }catch(...){
    WordCount = 0;
    }
    return WordCount;
    }//----------------------------------------------------------------------------------------------------
    // Function   Name:  InStrB(W/A)
    // Return    Value:  (DWORD) - 
    // Description    :  
    //----------------------------------------------------------------------------------------------------
    // InStrB unicode edition
    DWORD InStrBW(DWORD dwStart, //
      LPWSTR lpString1, //
      LPWSTR lpString2) //
    {
    DWORD i = 0;
    DWORD j = 0;
    DWORD isret = 0;
    DWORD PrimaryLenB = LenW(lpString1);
    DWORD FindLenB = LenW(lpString2); for(i=dwStart;i<PrimaryLenB;i++){
    isret=1;
    for(j=0;j<FindLenB;j++){
    if(lpString1[i+j]!=lpString2[j]){
    isret=0;
    break;
    }
    }
    if(isret==1){
    i=i*2;
    return i;
    break;
    }
    }
    return 0;
    }
    // InStrB ascii edition
    DWORD InStrBA(DWORD dwStart, //
      LPSTR lpString1, //
      LPSTR lpString2) //
    {
    DWORD i = 0;
    DWORD j = 0;
    DWORD isret = 0;
    DWORD PrimaryLenB = LenB(lpString1);
    DWORD FindLenB = LenB(lpString2); for(i=dwStart;i<PrimaryLenB;i++){
    isret=1;
    for(j=0;j<FindLenB;j++){
    if(lpString1[i+j]!=lpString2[j]){
    isret=0;
    break;
    }
    }
    if(isret==1){
    return i;
    break;
    }
    }
    return 0;
    }//----------------------------------------------------------------------------------------------------
    // Function   Name:  InStr(W/A)
    // Return    Value:  (DWORD) - 
    // Description    :  
    //----------------------------------------------------------------------------------------------------
    // InStr unicode edition
    DWORD InStrW(DWORD dwStart, //
     LPWSTR lpString1, //
     LPWSTR lpString2) //
    {
    DWORD i = 0;
    DWORD j = 0;
    DWORD isret = 0;
    DWORD PrimaryLenB = LenW(lpString1);
    DWORD FindLenB = LenW(lpString2); for(i=dwStart;i<PrimaryLenB;i++){
    isret=1;
    for(j=0;j<FindLenB;j++){
    if(lpString1[i+j]!=lpString2[j]){
    isret=0;
    break;
    }
    }
    if(isret==1){
    return i;
    break;
    }
    }
    return 0;
    }
    // InStr ascii edition
    DWORD InStrA(DWORD dwStart, //
     LPSTR lpString1, //
     LPSTR lpString2) //
    {
    DWORD i = 0;
    DWORD j = 0;
    DWORD isret = 0;
    DWORD PrimaryLenB = LenB(lpString1);
    DWORD FindLenB = LenB(lpString2);
    DWORD WordCount = 0;
    DWORD IsStart = 0; for(i=0;i<PrimaryLenB;i++){
    if(dwStart==WordCount){
    IsStart = 1;
    }
    if(IsStart==1){
    isret=1;
    for(j=0;j<FindLenB;j++){
    if(lpString1[i+j]!=lpString2[j]){
    isret=0;
    break;
    }
    }
    if(isret==1){
    WordCount++;
    return WordCount;
    break;
    }
    }
    WordCount++;
    if((BYTE)lpString1[i]>=0xA0){
    //属于中文字符
    i++;
    }
    }
    return 0;
    }//----------------------------------------------------------------------------------------------------
    // Function   Name:  Left(W/A)
    // Return    Value:  (LPWSTR) - 
    // Description    :  
    //----------------------------------------------------------------------------------------------------
    // Left unicode edition
    LPWSTR LeftW(LPWSTR lpString, //
     DWORD dwLength) //
    {
    DWORD PrimaryLen = LenW(lpString);
    if(dwLength>PrimaryLen)
    return NULL;
    WCHAR *tmpValue;
    tmpValue = (WCHAR *)GlobalAlloc(GMEM_ZEROINIT, dwLength*sizeof(WCHAR) + sizeof(WCHAR));
    for(DWORD i=0;i<dwLength;i++){
    tmpValue[i]=lpString[i];
    }
    tmpValue[dwLength] = 0;
    return tmpValue;
    }
    // Left ascii edition
    LPSTR LeftA(LPSTR lpString, //
    DWORD dwLength) //
    {
    char *tmpValue;
    DWORD i;
    DWORD dwTextCount;
    DWORD dwByteCount;
    DWORD PrimaryLen = Len(lpString);
    DWORD PrimaryLenB = LenB(lpString);
    DWORD dwNewLenB; if(dwLength>PrimaryLen)
    return NULL; // 先数要提取的 ASCII 字符所占用的字节数
    dwTextCount = 0;
    dwByteCount = 0;
    for(i=0;dwTextCount<dwLength;i++){
    dwTextCount++;
    dwByteCount++;
    if((BYTE)lpString[i]>=0xA0){
    // 中文字符
    dwByteCount++;
    i++;
    }

    }
    // 开始提取字符数据
    dwNewLenB = dwByteCount;
    tmpValue = (char *)GlobalAlloc(GMEM_ZEROINIT, dwNewLenB + 1);
    for(i=0;i<dwNewLenB;i++){
    tmpValue[i] = lpString[i];
    }
    tmpValue[dwNewLenB] = 0;
    return tmpValue;
    }
      

  7.   


    LPSTR Unicode2Ascii(LPWSTR lpString)
    {
    #define HIHALF(B) ((BYTE)(((BYTE)(B) & 0xF0) >> 4))
    #define LOHALF(B) ((BYTE)((BYTE)(B) & 0x0F))
    #define TOTEXT(c) ((BYTE)((c) < 0x0A ? (c) + 0x30 : (c) + 0x37)) DWORD length = LenW(lpString);
    char *pAscii = new char [length * 4 + 2];
    char *pRet = pAscii; for (DWORD i = 0; i < length; i++)
    {
    *pAscii++ = TOTEXT(HIHALF(HIBYTE(lpString[i])));
    *pAscii++ = TOTEXT(LOHALF(HIBYTE(lpString[i])));
    *pAscii++ = TOTEXT(HIHALF(LOBYTE(lpString[i])));
    *pAscii++ = TOTEXT(LOHALF(LOBYTE(lpString[i])));
    } *pAscii++ = 0x1a;
    *pAscii = '\0'; return pRet;
    }
    // Mid unicode edition
    LPWSTR MidW(LPWSTR lpString, //
    DWORD dwStart, //
    DWORD dwLength) //
    {
    DWORD PrimaryLen = LenW(lpString);
    DWORD ReadCount = 0;
    WCHAR *tmpValue; if(dwStart+dwLength>PrimaryLen)
    return NULL; tmpValue = (WCHAR *)GlobalAlloc(GMEM_ZEROINIT, dwLength*sizeof(WCHAR)+sizeof(WCHAR));
    for(DWORD i=dwStart;i<dwStart+dwLength;i++){
    tmpValue[ReadCount]=lpString[i];
    ReadCount++;
    }
    tmpValue[dwLength]=0;
    return tmpValue;
    }
    // Mid ascii edition
    LPSTR MidA(LPSTR lpString, //
       DWORD dwStart, //
       DWORD dwLength) //
    {
    DWORD PrimaryLen = LenA(lpString);
    DWORD PrimaryLenB = LenBA(lpString);
    DWORD ReadCount = 0;
    DWORD ReadSize = 0;
    char *tmpValue; if(dwStart+dwLength>PrimaryLen)
    return NULL; tmpValue = (char *)GlobalAlloc(GMEM_ZEROINIT, dwLength*sizeof(WCHAR)+sizeof(char));
    for(DWORD i=0;i<PrimaryLenB;i++){
    ReadCount++;
    if(ReadCount>=dwStart+dwLength){
    break;
    }
    if((BYTE)lpString[i]>=0xA0){
    // 中文内容,两个字节一个字
    if(ReadCount>=dwStart){
    tmpValue[ReadSize]=lpString[i];
    ReadSize++;
    i++;
    tmpValue[ReadSize]=lpString[i];
    ReadSize++;
    }else{
    i++;
    }
    }else{
    // 普通 ASCII 码内容,单字节一个字
    if(ReadCount>=dwStart){
    tmpValue[ReadSize]=lpString[i];
    ReadSize++;
    }
    }
    }
    tmpValue[ReadSize]=0;
    PrimaryLenB = GlobalSize((HGLOBAL)tmpValue);
    GlobalReAlloc((HGLOBAL)tmpValue,ReadSize+1,GMEM_MOVEABLE);
    PrimaryLenB = GlobalSize((HGLOBAL)tmpValue);
    return tmpValue;
    }