diff --git a/plugins/java-i18n/src/com/intellij/lang/properties/UnsupportedCharacterInspection.java b/plugins/java-i18n/src/com/intellij/lang/properties/UnsupportedCharacterInspection.java index 1e2cec926823..33d3f997997b 100644 --- a/plugins/java-i18n/src/com/intellij/lang/properties/UnsupportedCharacterInspection.java +++ b/plugins/java-i18n/src/com/intellij/lang/properties/UnsupportedCharacterInspection.java @@ -57,7 +57,8 @@ public class UnsupportedCharacterInspection extends PropertiesInspectionBase { VirtualFile file = psiFile.getVirtualFile(); if (file == null) return false; EncodingRegistry encoding = EncodingRegistry.getInstance(); - boolean isCustomized = encoding.getDefaultCharsetForPropertiesFiles(file) != null || + boolean isCustomized = encoding.isNative2Ascii(file) || + encoding.getDefaultCharsetForPropertiesFiles(file) != null || encoding.getEncoding(file, true) != NEW_JAVA_DEFAULT_CHARSET; return !isCustomized && hasErrorCharacter(element, property.getValue()); } diff --git a/plugins/java-i18n/testSrc/com/intellij/codeInspection/i18n/UnsupportedCharacterInspectionTest.java b/plugins/java-i18n/testSrc/com/intellij/codeInspection/i18n/UnsupportedCharacterInspectionTest.java index 45f847f8cd10..d424ec07c94a 100644 --- a/plugins/java-i18n/testSrc/com/intellij/codeInspection/i18n/UnsupportedCharacterInspectionTest.java +++ b/plugins/java-i18n/testSrc/com/intellij/codeInspection/i18n/UnsupportedCharacterInspectionTest.java @@ -4,9 +4,11 @@ package com.intellij.codeInspection.i18n; import com.intellij.lang.properties.UnsupportedCharacterInspection; import com.intellij.openapi.roots.LanguageLevelProjectExtension; import com.intellij.openapi.vfs.encoding.EncodingManager; +import com.intellij.openapi.vfs.encoding.EncodingProjectManager; import com.intellij.pom.java.LanguageLevel; import com.intellij.psi.PsiFile; import com.intellij.testFramework.fixtures.JavaCodeInsightFixtureTestCase; +import com.intellij.util.ui.UIUtil; import org.intellij.lang.annotations.Language; import java.io.IOException; @@ -49,6 +51,28 @@ public class UnsupportedCharacterInspectionTest extends JavaCodeInsightFixtureTe checkFile(props, "key1=Java + \\u2615"); } + public void testJava8WithNative2Ascii() { + javaVersion(LanguageLevel.JDK_1_8); + + PsiFile javaFile = addClass("Test.java", """ + import java.util.*; + public final class Test { + public static void main(String[] args) { + String value = ResourceBundle.getBundle("test").getString("key1"); + } + } + """); + + PsiFile props = addFile("test.properties", "key1=Java + ☕"); + EncodingProjectManager.getInstance(getProject()).setNative2AsciiForPropertiesFiles(props.getVirtualFile(), true); + UIUtil.dispatchAllInvocationEvents(); + + fileEncoding(props, StandardCharsets.UTF_8); + propertiesEncoding(props, null); + + checkHighlighting(javaFile); + } + public void testJava8PlusConstantWithConversion() throws IOException { javaVersion(LanguageLevel.JDK_1_8);