dotnet / dotnet/Silk.NET

The encoding of GetClipboardString method in Glfw is not correct.

Open
#2,412 3 comments 1 reaction 0 assignees View on GitHub
bug
Dominant language
C#
Stars
5.2k
Forks
477
Avg merge
3d 16h
Merged PRs (30d)
2

Description

# Summary
The encoding of GetClipboardString method in Glfw is not correct, it should be LPUTF8Str.

# Steps to reproduce
- Platform: Desktop (Windows 11 in Simplified Chinese)
- Framework Version: .NET 9
- Package: Silk.NET.Input.Glfw version 2.22.0
- API: /
- API Version: /
1. Copy a Chinese character, then run `Console.WriteLine(inputContext.Keyboards[0].ClipboardText)`, the output is wrong.
2. For example, I copy `你`, the output will be `浣?`
3. Then I run `Encoding.GetEncoding("gb2312").GetString(Encoding.UTF8.GetBytes("你"))`, the result is `浣?` too. (gb2312 is the default encoding of my system.)
4. I set a breakpoint in `SilkMarshal.PtrToString` method and run `Utf8PtrToString(input)`, I get the correct character `你`.

# Comments
In the document of GLFW:
```
const char* glfwGetClipboardString ( GLFWwindow * window )
This function returns the contents of the system clipboard, if it contains or is convertible to a UTF-8 encoded string.
```
So we have to use UTF-8 too.

**__If you know how to fix this issue, please submit a pull request instead!__**
The code of GetClipboardString seems autogenerated, I don't know how to fix it.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.