diff --git a/share/Makefile.linting b/share/Makefile.linting
index a642d5931e79282b68e72e0aeb0517207aad9e80..1823937486ac09cffdc482b1240208de375aa764 100644
--- a/share/Makefile.linting
+++ b/share/Makefile.linting
@@ -25,18 +25,25 @@
 ################################
 
 # make lint includes:
-# - make check-utf8 (should be fixed manually): valid UTF-8 encoding
+# - make check-utf8: valid UTF-8 encoding
 # - make check-eoleof: EOF preceded by an EOL
 # - make check-syntax: EOF preceded by an EOL + no TAB + no BLANK at the end
 # - make check-indent: valid indentation
-# For all these targets, it is possible to restrict the search to a sub-directory:
+# For all these targets (and the coresponding fix-XXX), it is possible to restrict the search to a sub-directory:
 # - make LINT_DIR=<subdir> <lint-target>
+# It is possible to force the action to given files:
+# - make LINT_FILE=<subdir> <lint-target>
+# Note:
+# - when LINT_FILE is given, .gitattributes and LINT_DIR are ignored;
+# - to use fix-utf8 taget, the variable LINT_FROM_CODE=<from-encoding-name>
+#   has to be set.
 
 ################################
 ## Default variables
 
 IS_UTF8 ?= iconv -f UTF-8 -t UTF-8
-TO_UTF8 ?= iconv -f <NAME> -t UTF-8
+TO_UTF8 ?= iconv -t UTF-8 -f
+
 OCP_INDENT ?= ocp-indent
 
 # Default values necessary for
@@ -126,33 +133,70 @@ ifeq ($(LINT_FILE),)
 # No lint file given
 
 LINT.dir=$(wildcard $(LINT_DIR))
+
 .PHONY: check-utf8
 check-utf8:
+	echo "Checking UTF8..."
+	$(GIT) ls-files $(LINT.dir) -z \
+        | $(GIT) check-attr --stdin -z $@ \
+        | $(SED) -zne 'x;n;n;s/^set$$//;t print;b;:print;x;p' \
+        | xargs --null -IXX sh -c '$(LINT.make) LINT_FILE="XX" $@ || exit 255'
+
+.PHONY: fix-utf8
+fix-utf8:
+	echo "Fixing UTF8..."
 	$(GIT) ls-files $(LINT.dir) -z \
-        | $(GIT) check-attr --stdin -z check-utf8 \
+        | $(GIT) check-attr --stdin -z $(patsubst fix-%,check-%,$@) \
         | $(SED) -zne 'x;n;n;s/^set$$//;t print;b;:print;x;p' \
-        | xargs --null -IXX sh -c '$(LINT.make) LINT_FILE="XX" check-utf8 || exit 255'
+        | xargs --null -IXX sh -c '$(LINT.make) LINT_FILE="XX" $@ || exit 255'
 
 .PHONY: check-eoleof
 check-eoleof:
+	echo "Checking EOL EOF..."
+	$(GIT) ls-files $(LINT.dir) -z \
+        | $(GIT) check-attr --stdin -z $@ \
+        | $(SED) -zne 'x;n;n;s/^set$$//;t print;b;:print;x;p' \
+        | xargs --null -IXX sh -c '$(LINT.make) LINT_FILE="XX" $@ || exit 255'
+
+.PHONY: fix-eoleof
+fix-eoleof:
+	echo "Fixing EOL EOF..."
 	$(GIT) ls-files $(LINT.dir) -z \
-        | $(GIT) check-attr --stdin -z check-eoleof \
+        | $(GIT) check-attr --stdin -z $(patsubst fix-%,check-%,$@) \
         | $(SED) -zne 'x;n;n;s/^set$$//;t print;b;:print;x;p' \
-        | xargs --null -IXX sh -c '$(LINT.make) LINT_FILE="XX" check-eoleof || exit 255'
+        | xargs --null -IXX sh -c '$(LINT.make) LINT_FILE="XX" $@ || exit 255'
 
 .PHONY: check-syntax
 check-syntax:
+	echo "Checking syntax..."
+	$(GIT) ls-files $(LINT.dir) -z \
+        | $(GIT) check-attr --stdin -z $@ \
+        | $(SED) -zne 'x;n;n;s/^set$$//;t print;b;:print;x;p' \
+        | xargs --null -IXX sh -c '$(LINT.make) LINT_FILE="XX" $@ || exit 255'
+
+.PHONY: fix-syntax
+fix-syntax:
+	echo "Fixing syntax..."
 	$(GIT) ls-files $(LINT.dir) -z \
-        | $(GIT) check-attr --stdin -z check-syntax \
+        | $(GIT) check-attr --stdin -z $(patsubst fix-%,check-%,$@) \
         | $(SED) -zne 'x;n;n;s/^set$$//;t print;b;:print;x;p' \
-        | xargs --null -IXX sh -c '$(LINT.make) LINT_FILE="XX" check-syntax || exit 255'
+        | xargs --null -IXX sh -c '$(LINT.make) LINT_FILE="XX" $@ || exit 255'
 
 .PHONY: check-indent
 check-indent:
+	echo "Checking indent..."
 	$(GIT) ls-files $(LINT.dir) -z \
-        | $(GIT) check-attr --stdin -z check-indent \
+        | $(GIT) check-attr --stdin -z $@ \
         | $(SED) -zne 'x;n;n;s/^set$$//;t print;b;:print;x;p' \
-        | xargs --null -IXX sh -c '$(LINT.make) LINT_FILE="XX" check-indent || exit 255'
+        | xargs --null -IXX sh -c '$(LINT.make) LINT_FILE="XX" $@ || exit 255'
+
+.PHONY: fix-indent
+fix-indent:
+	echo "Fixing indent..."
+	$(GIT) ls-files $(LINT.dir) -z \
+        | $(GIT) check-attr --stdin -z $(patsubs fix-,check-,$@) \
+        | $(SED) -zne 'x;n;n;s/^set$$//;t print;b;:print;x;p' \
+        | xargs --null -IXX sh -c '$(LINT.make) LINT_FILE="XX" $@ || exit 255'
 
 else # LINT_FILE are given
 
@@ -165,6 +209,7 @@ LINT_FILE.check-eoleof= $(addsuffix .check-eoleof,$(LINT_FILE.list))
 LINT_FILE.check-syntax= $(addsuffix .check-syntax,$(LINT_FILE.list))
 LINT_FILE.check-indent= $(addsuffix .check-indent,$(LINT_FILE.list))
 
+LINT_FILE.fix-utf8= $(addsuffix .fix-utf8,$(LINT_FILE.list))
 LINT_FILE.fix-eoleof= $(addsuffix .fix-eoleof,$(LINT_FILE.list))
 LINT_FILE.fix-syntax= $(addsuffix .fix-syntax,$(LINT_FILE.list))
 LINT_FILE.fix-indent= $(addsuffix .fix-indent,$(LINT_FILE.list))
@@ -185,33 +230,55 @@ check-indent: $(LINT_FILE.check-indent)
 
 ## fix-XXX targets
 
-.PHONY: fix-syntax
-fix-syntax: $(LINT_FILE.fix-syntax)
+.PHONY: fix-utf8
+fix-utf8: $(LINT_FILE.fix-utf8)
 
 .PHONY: fix-eoleof
 fix-eoleof: $(LINT_FILE.fix-eoleof)
 
+.PHONY: fix-syntax
+fix-syntax: $(LINT_FILE.fix-syntax)
+
 .PHONY: fix-indent
 fix-indent: $(LINT_FILE.fix-indent)
 
 endif
 
 ###############################
-## UTF8 ASPECT (should be fixed manually)
+## UTF8 ASPECT
 
 $(LINT_FILE.check-utf8): .lint/%.check-utf8: %
 	echo "Check UTF8: $<"
 	if ! $(IS_UTF8) $< > /dev/null; \
         then \
           echo "File $< uses an invalid UTF-8 encoding."; \
-          echo "Please fixe it manually, pearhaps with:"; \
-					echo "  $(TO_UTF8) --from-code=<NAME> $< -o fixed ; mv fixed $<";\
-          echo "The next command may help you to find that <NAME>: file $<";\
+          echo "Please fixe it manualy or in running: make LINT_FROM_CODE=<ENCODING-NAME> LINT_FILE=$< fix-utf8";\
+          echo "The next command may help you to find that <ENCODING-NAME>: file $<";\
           exit 1; \
         fi
 	$(MKDIR) $(dir $@)
 	$(TOUCH) $@
 
+ifneq ($(LINT_FROM_CODE),)
+
+.PHONY: $(LINT_FILE.fix-utf8)
+$(LINT_FILE.fix-utf8): .lint/%.fix-utf8: %
+	if ! $(IS_UTF8) $< > /dev/null 2> /dev/null; \
+        then \
+          echo "Fixes UTF8 (from $(LINT_FROM_CODE)): $<"; \
+          if ! $(TO_UTF8) $(LINT_FROM_CODE) $< > $<.tmp; then exit 1; fi; \
+           $(MV) $<.tmp $<; \
+        fi
+	$(MKDIR) $(dir $@)
+	$(TOUCH) .lint/$<.check-utf8 # no more need of check-indent
+
+else
+
+$(LINT_FILE.fix-utf8): .lint/%.fix-utf8: % .lint/check-ocp-indent-version
+	$(error "Target fix-utf8 requires to define LINT_FROM_CODE variable")
+
+endif # LINT_FROM_ENCODING
+
 ###############################
 ## INDENTATION ASPECT