### Godot version

v4.0.3.stable.official [5222a99f5]

### System information

win10 21H2,Vulkan API 1.2.0

### Issue description

I'm for use `"Beta: Use Unicode UTF-8 for worldwide language support"`
The file name will display as normal, but `ZIPReader.read_file()` is still garbled

I tried using 7zip Packing files, 
Disable `"Beta: Use Unicode UTF-8 for worldwide language support"` 
Is still displayed normally, but `ZIPReader.read_file()`  is still garbled

![testzip](https://github.com/godotengine/godot/assets/104408400/9f064ed4-a4a5-472d-902d-97a77ba1c79d)


### Steps to reproduce

run node.tscn, look error reporting.

### Minimal reproduction project

[test_zip.zip](https://github.com/godotengine/godot/files/11873912/test_zip.zip)

uint32_t pack_flags = 0;
	bool enc_pck = p_preset->get_enc_pck();
	bool enc_directory = p_preset->get_enc_directory();
	if (enc_pck && enc_directory) {
		pack_flags |= PACK_DIR_ENCRYPTED;
	}
	f->store_32(pack_flags); 
	uint64_t file_base_ofs = f->get_position();
	f->store_64(0); 
	for (int i = 0; i < 16; i++) {
		
		f->store_32(0);
	}
	f->store_32(pd.file_ofs.size()); 
	Ref<FileAccessEncrypted> fae;
	Ref<FileAccess> fhead = f;
	if (enc_pck && enc_directory) {
		String script_key = _get_script_encryption_key(p_preset);
		Vector<uint8_t> key;
		key.resize(32);
		if (script_key.length() == 64) {
			for (int i = 0; i < 32; i++) {
				int v = 0;
				if (i * 2 < script_key.length()) {
					char32_t ct = script_key[i * 2];
					if (is_digit(ct)) {
						ct = ct - '0';
					} else if (ct >= 'a' && ct <= 'f') {
						ct = 10 + ct - 'a';
					}