diff --git a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/Project.java b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/Project.java
index 5a61ab9..f907db7 100644
--- a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/Project.java
+++ b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/Project.java
@@ -627,6 +627,7 @@
 		info.clear(M_OPEN);
 		info.clearSessionProperties();
 		info.clearModificationStamp();
+		info.clearCharsetGenerationCount();
 		info.setSyncInfo(null);
 	}
 
diff --git a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/ResourceInfo.java b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/ResourceInfo.java
index 1fbd484..f8c2e7a 100644
--- a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/ResourceInfo.java
+++ b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/ResourceInfo.java
@@ -116,6 +116,10 @@
 		modStamp = IResource.NULL_STAMP;
 	}
 
+	public void clearCharsetGenerationCount() {
+		charsetAndContentId = getContentId();
+	}
+
 	public synchronized void clearSessionProperties() {
 		sessionProperties = null;
 	}
diff --git a/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/resources/regression/IResourceTest.java b/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/resources/regression/IResourceTest.java
index aa95f69..8e14a6f 100644
--- a/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/resources/regression/IResourceTest.java
+++ b/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/resources/regression/IResourceTest.java
@@ -15,16 +15,18 @@
 package org.eclipse.core.tests.resources.regression;
 
 import java.io.InputStream;
+import java.nio.charset.StandardCharsets;
 import junit.framework.Test;
 import junit.framework.TestSuite;
 import org.eclipse.core.filesystem.EFS;
 import org.eclipse.core.resources.*;
 import org.eclipse.core.runtime.*;
+import org.eclipse.core.tests.resources.ResourceDeltaVerifier;
 import org.eclipse.core.tests.resources.ResourceTest;
 
 public class IResourceTest extends ResourceTest {
 
-	private boolean DISABLED = true;
+	private final boolean DISABLED = true;
 
 	public static Test suite() {
 		return new TestSuite(IResourceTest.class);
@@ -166,7 +168,7 @@
 		final boolean[] seen = new boolean[] {false};
 		final boolean[] phantomSeen = new boolean[] {false};
 		class DeltaVisitor implements IResourceDeltaVisitor {
-			private boolean[] mySeen;
+			private final boolean[] mySeen;
 
 			DeltaVisitor(boolean[] mySeen) {
 				this.mySeen = mySeen;
@@ -695,4 +697,41 @@
 			fail("3.0", e);
 		}
 	}
+
+	/**
+	 * 553269: Eclipse sends unexpected ENCODING change after closing/opening
+	 * project with explicit encoding settings changed in the same session
+	 */
+	public void testBug553269() throws Exception {
+		IWorkspace workspace = getWorkspace();
+		IProject project = workspace.getRoot().getProject("MyProject");
+		IFolder settingsFolder = project.getFolder(".settings");
+		IFile settingsFile = settingsFolder.getFile("org.eclipse.core.resources.prefs");
+		project.create(null);
+		project.open(null);
+		project.setDefaultCharset(StandardCharsets.UTF_8.name(), null);
+
+		assertTrue("Preferences saved", settingsFile.exists());
+
+		project.close(null);
+
+		ResourceDeltaVerifier verifier = new ResourceDeltaVerifier();
+		workspace.addResourceChangeListener(verifier, IResourceChangeEvent.POST_CHANGE);
+		// We expect only OPEN change, the original code generated
+		// IResourceDelta.OPEN | IResourceDelta.ENCODING
+		verifier.addExpectedChange(project, IResourceDelta.CHANGED, IResourceDelta.OPEN);
+
+		// This is irrelevant for the test but verifier verifies entire delta...
+		verifier.addExpectedChange(settingsFolder, IResourceDelta.ADDED, 0);
+		verifier.addExpectedChange(settingsFile, IResourceDelta.ADDED, 0);
+		verifier.addExpectedChange(project.getFile(".project"), IResourceDelta.ADDED, 0);
+
+		try {
+			project.open(null);
+			assertTrue(verifier.getMessage(), verifier.isDeltaValid());
+		} finally {
+			workspace.removeResourceChangeListener(verifier);
+			project.delete(true, true, null);
+		}
+	}
 }
