C#UNITY Unicode表情符号显示



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

  • '\u2764'用于❤
  • 的'\ud83d\udc4d'😂

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

当我尝试下面的代码

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

我得到

  • '\u2764'用于❤
  • 的'\ud83d\udc4d'😂

当我尝试以下代码时

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

我得到

  • '畜㜲㐶'对于❤
  • '畜㡤搳畜捤搴'对于😂

谢谢Jos

代码,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 "x65x78x61x6Dx70x6Cx65, u2764, U0001F602 or ud83dudc4d"
example, ❤, 😂 or 👍
D_8

最新更新