繁体   English   中英

C# UNITY Unicode 表情符号显示

[英]C# UNITY Unicode Emoji Display

我正在从源系统接收以下格式的表情符号。

  • '\❤' 为 ❤
  • '\?\?' 为😂

我需要知道如何转换它,因此它在 Unity 调试日志和文本字段中显示为正确的表情符号。 请帮我。

当我尝试以下代码时

            socket = listener.Accept();
            int bytesRec = socket.Receive(receiveBuffer);
            data = Encoding.UTF8.GetString(receiveBuffer, 0, bytesRec); 
            Debug.Log(data);

我得到

  • '\❤' 为 ❤
  • '\?\?' 为😂

当我尝试以下代码时

            socket = listener.Accept();
            int bytesRec = socket.Receive(receiveBuffer);
            data = Encoding.Unicode.GetString(receiveBuffer, 0, bytesRec); 
            Debug.Log(data);

我得到

  • '畜㜲㐶' for ❤
  • '畜㡤搳畜捤搴'为😂

谢谢乔斯

代码,HTH:

Function Get-PythonString {
    [CmdletBinding()]
    [OutputType([System.String],[System.Int32[]])]
param(
    [Parameter(Position=0, Mandatory, ValueFromPipeline)] [String]$pyStr='',
    [Parameter()] [Switch] $AsArray
)
    $retArr = [System.Collections.ArrayList]::new()
    $retStr = ''
    $highSur= ''
    $i=0
    while ( $i -lt $pyStr.Length ) {
        if ( $pyStr.Chars($i) -eq '\' ) {
            if ( $pyStr.Chars($i +1 ) -ceq 'U' ) {
                $iAux = [int]("0x" + ($pyStr.Substring( $i+2, 8)))
                $i += 10
            } elseif ( $pyStr.Chars($i +1 ) -ceq 'u' ) {
                $iAux = [int]("0x" + ($pyStr.Substring( $i+2, 4)))
                $i += 6
            } elseif ( $pyStr.Chars($i +1 ) -ceq 'x' ) {
                $iAux = [int]("0x" + ($pyStr.Substring( $i+2, 2)))
                $i += 4
            } else {
                $iAux = [int]$pyStr.Chars( $i )
                $i++
            }
        } else {
            $iAux = [int]$pyStr.Chars( $i )
            $i++
        }
        if ( $iAux -gt 0xFFFF ) { # out of BMP } {
            [void]$retArr.Add( [int]$iAux)
            $retStr += [char]::ConvertFromUtf32( $iAux)
        } else {
            if ( [char]::IsHighSurrogate( [char]$iAux )) {
                $highSur = [char]$iAux
            } else {
                if ( [char]::IsLowSurrogate( [char]$iAux )) {
                    $iAux = [int][char]::ConvertToUtf32( $highSur, [char]$iAux)
                    $highSur = ''
                }
                [void]$retArr.Add( [int]$iAux)
                $retStr += [char]::ConvertFromUtf32( $iAux)
            }
        }
    }
    if ($AsArray.IsPresent) {
        $retArr
    } else {
        $retStr
    }
}

仅在 Python 字符串文字中识别的转义序列是:

Escape Sequence  Meaning
\xnn             Character with  8-bit hex value nn
\unnnn           Character with 16-bit hex value nnnn
\Unnnnnnnn       Character with 32-bit hex value nnnnnnnn
\N{name}         Character named name in the Unicode database (not implemented)

用法示例

Get-PythonString -pyStr "\x65\x78\x61\x6D\x70\x6C\x65, \u2764, \U0001F602 or \ud83d\udc4d"
 example, ❤, 😂 or 👍
"\x65\x78\x61\x6D\x70\x6C\x65, \u2764, \U0001F602 or \ud83d\udc4d"|Get-PythonString
 example, ❤, 😂 or 👍

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM